我对以下类型的行为感到困惑Nullable:
class TestClass {
public int? value = 0;
}
TestClass test = new TestClass();
现在,Nullable.GetUnderlyingType(test.value)返回基础Nullable类型,即int. 但是,如果我尝试获取这样的字段类型
FieldInfo field = typeof(TestClass).GetFields(BindingFlags.Instance | BindingFlags.Public)[0];
我调用
Nullable.GetUnderlyingType(field.FieldType).ToString()
它返回一个System.Nullable[System.Int32]类型。这意味着该方法Nullable.GetUnderlyingType()具有不同的行为,具体取决于您获取成员类型的方式。为什么呢?如果我只是使用test.value,我怎么能说它Nullable不使用反射?