小编Tre*_*ree的帖子

C#引用数组

我怎么能这样做?

int v1 = 4;
int v2 = 3;
int v3 = 2;
int v4 = 1;

int [] vars = new int [] {ref v1, ref v2, ref v3, ref v4};

for (var i = 0; i < 4; i++) {
    ChangeVar (vars [i], i);
}

void ChangeVar (ref int thatVar, int newValue) {
    thatVar = newValue;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我想这样做是因为这些变量是由其他类直接访问的.例如v1可以是某物的宽度,v2可以是某物的高度.我的一些类使用width变量来限制它必须从用户获得的输入的长度.有些类使用height变量来做其他事情.但我希望能够使用循环编辑这些变量,因为现在这是编辑过程的工作方式:

int indexOfVarToChange = GetIndex ();

switch (indexOfVarToChange) {
    case 0:
        int newValue = GetNewValue ();
        width = newValue;
        break; …
Run Code Online (Sandbox Code Playgroud)

c# arrays reference

7
推荐指数
1
解决办法
1万
查看次数

C# 与结构中的列表混淆(值类型与引用类型)

所以我今天发现结构和类在 C# 中用于分配变量时的行为不同..据我所知,当我将结构分配给变量时,变量存储该结构的副本,当我分配一个类时到一个变量,该变量存储对该类实例的引用。

在这种情况下,dad2 包含一个 dad1 的副本,所以我对 dad2 做的任何事情都不应该影响 dad1 吗?显然情况并非如此,因为当我将一个儿子添加到 dad2 时,它也会将同一个儿子添加到 dad1。

public struct Dad {
        public string name;
        public List <Son> sons;

        public struct Son {
            public string name;

            public Son (string n) {
                name = n;
            }
        }
    }

    static void Main (string [] args) {
        Dad dad1 = new Dad ();
        dad1.name = "Bob";
        dad1.sons = new List <Dad.Son> {new Dad.Son ("A")};

        Dad dad2 = dad1;
        Debug.WriteLine (dad2.Equals (dad1) + " " + dad1.sons.Count () …
Run Code Online (Sandbox Code Playgroud)

c# value-type reference-type

5
推荐指数
1
解决办法
3532
查看次数

最终用户运行C#控制台程序需要什么?

我使用Visual C#2008 Express制作了一个控制台游戏,整个游戏只使用来自System命名空间的东西,没有花哨的第三方库,并且它需要的是根目录中的2个文件夹,用于存储它创建的XML文件.我甚至可以进入Debug文件夹并复制应用程序和2个文件夹并将它们粘贴到其他地方,它们都可以工作.所以我想我可以将游戏分发为压缩文件夹.

我想知道的是,没有安装Visual Studio的最终用户需要运行此游戏的最低限度是什么?我看了一下我的非程序员朋友,她的名字中包含"Microsoft Visual"的10多件事,比如她安装的程序列表中的.NET框架和Redistributable Package.我真的不知道这些是什么.

c# console

4
推荐指数
1
解决办法
1466
查看次数

Java无法在OSX上使用JNI加载共享库

我正在尝试使用JNI以最简单的方式在我朋友的64位OSX上加入Java和C,我收到了这个错误.以下是涉及的一切:

test.java

public class test {

    static {System.loadLibrary ("test");}

    native void aaa ();

    public static void main (String [] args) {
        new test ();
    }

    public test () {
        aaa ();
    }
}
Run Code Online (Sandbox Code Playgroud)

test.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class test */

#ifndef _Included_test
#define _Included_test
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     test
 * Method:    aaa
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_test_aaa
  (JNIEnv …
Run Code Online (Sandbox Code Playgroud)

c java java-native-interface shared-libraries

4
推荐指数
1
解决办法
3272
查看次数

如何通过md5比较图像?

这种方法比较图像的像素值吗?我猜它不会起作用,因为它们彼此的大小不同但是如果它们是相同的,但是以不同的格式呢?例如,我拍了一个截图并保存为.jpg另一个并保存为.gif.

php hash md5 compare image

3
推荐指数
3
解决办法
2万
查看次数

如何制作类似于Visual C#2008属性窗口的东西?

我感兴趣的是条形下方的所有内容,其中的按钮决定了属性的显示方式.我能想到的只有一个分离器和一个状态条.

我所追求的是如何有2个部分我想添加标题属性和值,这些部分可以用分割器调整大小(我假设在这种情况下使用分割器),每个属性都可以选择和相应的说明显示在状态栏上,每个值可以是文本或下拉框.

编码部分我可以自己做,我需要知道的是控制窗口是由什么组成的,以及它是如何组合在一起的.

c# controls winforms

3
推荐指数
1
解决办法
2037
查看次数

更改后如何恢复/撤消桌面壁纸?

我正在创建一个屏幕共享应用程序.启动屏幕共享时,我将桌面墙纸颜色更改为黑色.

问题 如何恢复以前的壁纸或Windows主题?

我使用代码将背景更改为纯色,如下所示

此外,此代码存在问题,一旦使用此代码更改背景,我无法将图像设置为壁纸,但我可以应用主题.

public class wallpaperHelper
    {
        public static void SetColor(Color color)
        {

            // Remove the current wallpaper
            NativeMethods.SystemParametersInfo(
                NativeMethods.SPI_SETDESKWALLPAPER,
                0,
                "",
                NativeMethods.SPIF_UPDATEINIFILE | NativeMethods.SPIF_SENDWININICHANGE);

            // Set the new desktop solid color for the current session
            int[] elements = { NativeMethods.COLOR_DESKTOP };
            int[] colors = { System.Drawing.ColorTranslator.ToWin32(color) };
            NativeMethods.SetSysColors(elements.Length, elements, colors);

            // Save value in registry so that it will persist
            RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Colors", true);
            key.SetValue(@"Background", string.Format("{0} {1} {2}", color.R, color.G, color.B));
        }

        private static class …
Run Code Online (Sandbox Code Playgroud)

c#

3
推荐指数
1
解决办法
663
查看次数

"事件"和成员函数指针的C++映射

我已经设法编写一个模板类来像回调一样工作,从这个问题的接受答案中学习如何定义一般成员函数指针.

我希望有一个字符串键和回调值的映射,以便我可以调用匹配字符串的正确回调.这没关系,但我需要地图来支持来自不同类的回调.现在它只能用于一个类.它可以是任何类,因为模板只是来自同一个类的回调集合.

class Apple {
public:
    void Red () {
        cout << "aa";
    }
};

class Orange {
public:
    void Blue () {
        cout << "bb";
    }
};

template <typename T>
class Callback {
    T *obj;
    void (T::*ptr) (void);

public:
    Callback (T *obj, void (T::*ptr) (void)) : obj (obj), ptr (ptr) {

    }

    void Call () {
        (obj->*ptr) ();
    }
};
Run Code Online (Sandbox Code Playgroud)

我可以这样使用它

Apple apple;
Orange orange;
Callback <Apple> callA (&apple, &Apple::Red);
Callback <Orange> callB (&orange, &Orange::Blue);
callA.call (); …
Run Code Online (Sandbox Code Playgroud)

c++ templates member-function-pointers function-pointers callback

0
推荐指数
2
解决办法
2458
查看次数