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

Joh*_*ell 7 c# types

只是好奇.

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

假设用法:

public Type MyMethod( object myObject )
{
    return myObject.GetType();
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*Dev 14

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


jas*_*son 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()); 
} 
Run Code Online (Sandbox Code Playgroud)

这是某个输出T:

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

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.
Run Code Online (Sandbox Code Playgroud)

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

(Marc Gravell的信用原创概念.)