4

我一直在 stackoverflow 上阅读如何使用反射写入类 var 成员。我使用类似的东西:

typeof(MyClass).GetField("myvar", BindingFlags.Public | BindingFlags.Instance).SetValue(instancie, 10);

这适用于类,但如果我在读取 myvar 时对 Struct 而不是类做同样的事情,我总是得到 0(int 的默认构造值)。这是我使用的代码:

struct MyStruct
{
    public int myvar;
}

MyStruct instance=new MyStruct();

typeof(MyStruct).GetField("myvar", BindingFlags.Public | BindingFlags. BindingFlags.Instance).SetValue(instance, 10);

有谁知道为什么会发生这种情况?

4

1 回答 1

5

当您传入“实例”时,这是一个框 - 它是数据的包装克隆,您稍后会丢弃。

在这里使用反射:

object obj = instance; // box
blah.SetValue(obj, value); // mutate inside box
instance = (YourType)obj; // unbox
于 2012-03-16T16:14:38.733 回答