我对以下类型的行为感到困惑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
不使用反射?