C# Object.GetType()是否可以返回null?
只是好奇而已 在对象上调用C# Object.GetType()是否可以返回null?,c#,types,C#,Types,只是好奇而已 在对象上调用.GetType()时是否有任何时候会返回null 假设用法: public Type MyMethod( object myObject ) { return myObject.GetType(); } 如果myObject参数为null,则无法对其调用GetType()。将引发NullReferenceException。否则,我想你会没事的。 MSDN仅列出类型对象作为返回值 我可以想象,除此之外,您所能得到的只是一个“未设置为对象实例”异常(或者它的n
.GetType()
时是否有任何时候会返回null
假设用法:
public Type MyMethod( object myObject )
{
return myObject.GetType();
}
如果myObject参数为null,则无法对其调用GetType()。将引发NullReferenceException。否则,我想你会没事的。 MSDN仅列出类型对象作为返回值
我可以想象,除此之外,您所能得到的只是一个“未设置为对象实例”异常(或者它的null引用),因为MSDN确实说了instance。对象上的GetType永远不会返回null-至少它将是object类型。如果myObject为null,那么在尝试调用GetType()时将出现异常基本上,不,它不能(永远返回null)也不会。不,它不会返回null。但这里有一个要注意的问题
static void WhatAmI<T>() where T : new() {
T t = new T();
Console.WriteLine("t.ToString(): {0}", t.ToString());
Console.WriteLine("t.GetHashCode(): {0}", t.GetHashCode());
Console.WriteLine("t.Equals(t): {0}", t.Equals(t));
Console.WriteLine("t.GetType(): {0}", t.GetType());
}
什么是T
?回答:任何可为空
(把最初的概念归功于马克·格雷威尔)@Marc gravel:如果你是这个意思,我真的要归功于你。我找不到你第一次展示的帖子,不过是为了提供一个链接?我以为这是在C#/.NET gotcha线程中。在C#中引入
动态
关键字和元编程之后,这个答案就不再正确了!见此:
t.ToString():
t.GetHashCode(): 0
t.Equals(t): True
Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.