Object.GetType()是否可以返回null?

时间:2010-02-04 15:49:10

标签: c# types

只是好奇。

是否有任何时候在对象上调用.GetType()将返回null?

假设用法:

public Type MyMethod( object myObject )
{
    return myObject.GetType();
}

5 个答案:

答案 0 :(得分:14)

对象上的GetType永远不会返回null - 至少它将是object类型。如果myObject为null,那么当你试图调用GetType()时你会得到一个异常

答案 1 :(得分:5)

不,它不会返回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的输出:

t.ToString():
t.GetHashCode(): 0
t.Equals(t): True

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.

什么是T?答案:任何Nullable<U>

(Marc Gravell的信用原则概念。)

答案 2 :(得分:2)

如果myObject参数为null,则您将无法在其上调用GetType()。将抛出NullReferenceException。否则,我认为你会好的。

答案 3 :(得分:0)

http://msdn.microsoft.com/en-us/library/system.object.gettype(VS.85).aspx

MSDN仅列出一个类型对象作为返回值。

我想你可以得到的只是“未设置为对象的实例”异常(或者可能是其空引用)因为MSDN确实说实例。

答案 4 :(得分:0)

基本上,不,它不能(永远不会返回null)而不会。