var a = new obj();
var property = a.GetType().GetProperty("DB").GetValue(a,null) as testObject;
这是否意味着变量property
保存对对象a中相同对象的引用,或者创建了一个保持相同值的新testObject?
如果这意味着创建一个新对象,那么如何使用反射获得对该属性/支持字段的引用?
答案 0 :(得分:3)
property
现在为<{1}}的{{1}}属性中的任何内容提供引用。
我不确定当您在具有值类型的属性上调用a
时会发生什么,我想您会获得对原始值的盒装副本的引用,如{{3}中所述}:
在
DB
的情况下装箱值类型[到GetValue()
]在堆上分配一个对象实例并将值复制到新对象中。
答案 1 :(得分:2)
它表示对象DB
的属性a
的值转换为testType
(您在a
中传递对象PropertyInfo.GetValue
的引用),因此,只有一个对象a
,并且您的变量引用其DB
属性。
答案 2 :(得分:2)
变量property
保存对属性DB
中存储的相同值的引用。
GetValue(a,null)
返回类型是对象,因此使用as运算符可以简单地类型化它。