C# 将值写入带有反射的struct var成员并不可行,但对于类却有效
我一直在stackoverflow阅读如何使用反射写入类var成员。我用的是:C# 将值写入带有反射的struct var成员并不可行,但对于类却有效,c#,reflection,system.reflection,C#,Reflection,System.reflection,我一直在stackoverflow阅读如何使用反射写入类var成员。我用的是: typeof(MyClass).GetField("myvar", BindingFlags.Public | BindingFlags.Instance).SetValue(instancie, 10); 这适用于类,但如果我在读取myvar时对结构而不是类执行相同的操作,那么我总是得到0(int的默认构造值)。这是我使用的代码: struct MyStruct { public int myvar; }
typeof(MyClass).GetField("myvar", BindingFlags.Public | BindingFlags.Instance).SetValue(instancie, 10);
这适用于类,但如果我在读取myvar时对结构而不是类执行相同的操作,那么我总是得到0(int的默认构造值)。这是我使用的代码:
struct MyStruct
{
public int myvar;
}
MyStruct instance=new MyStruct();
typeof(MyStruct).GetField("myvar", BindingFlags.Public | BindingFlags. BindingFlags.Instance).SetValue(instance, 10);
有人知道为什么会出现这种情况吗?当您传入“实例”时,它是一个盒子,是一个包装好的数据克隆,稍后您会丢弃它
要在此处使用反射,请执行以下操作:
object obj = instance; // box
blah.SetValue(obj, value); // mutate inside box
instance = (YourType)obj; // unbox