请看以下示例:
public class Test {
public int Number { get; set; }
public void TestReflection() {
Number = 99;
Type type = GetType();
PropertyInfo propertyInfo = type.GetProperty("Number");
propertyInfo.SetValue(this, null, null);
}
}
在这个示例中,我使用反射将一个int属性设置为null。我原本期望会抛出异常,因为null不是int类型的有效值。但是它没有抛出异常,而是将属性设置为0。为什么会这样呢?
更新
好吧,看来就是这样。如果你尝试将value-type类型的属性设置为null,它会得到默认值。我已经发布了一个回答,描述了我如何解决我的问题,也许这会在将来帮助某些人。谢谢所有回答的人。