Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Object.GetType()是否可以返回null?_C#_Types - Fatal编程技术网

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.