我一直在这里阅读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);
有人知道为什么会这样吗?
答案 0 :(得分:5)
当您传入“实例”时,这是一个框 - 这是数据的包装克隆,您稍后会丢弃。
在这里使用反射:
object obj = instance; // box
blah.SetValue(obj, value); // mutate inside box
instance = (YourType)obj; // unbox