可能重复:
.NET:如何获取空对象的类型?
基本上,我希望以下代码之一在没有空引用错误的情况下工作:
int? i1 = default(int?);
int? i2 = new Nullable<Int32>();
int? i3 = new int?();
var t1 = i1.GetType();
var t2 = i2.GetType();
var t3 = i3.GetType();
我希望/期望我能够从上面的i对象中获取类型,而不会出现空引用异常。
如果这是不可能的,我将如何在保持空值的同时创建对 Nullable Int 的引用。
更新:对于那些感兴趣并且不想筛选链接问题中不完全适用的答案的人,解决方案是:
private void Example()
{
var i = default(int?);
var t = this.GetDeclaredType(i);
}
private Type GetDeclaredType<T>(T obj)
{
return typeof(T);
}