【问题标题】:Can Object.GetType() ever return null?Object.GetType() 可以返回 null 吗?
【发布时间】:2013-04-25 20:01:16
【问题描述】:

只是好奇。

在对象上调用.GetType() 是否会返回null?

假设用法:

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

【问题讨论】:

    标签: c# types


    【解决方案1】:

    对象上的GetType 永远不会返回null - 至少它将是对象类型。如果 myObject 为 null,那么当您尝试调用 GetType() 时会出现异常

    【讨论】:

    【解决方案2】:

    不,它不会返回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&lt;U&gt;

    (将原始概念归功于 Marc Gravell。)

    【讨论】:

    • @Marc Gravell:如果这就是你的意思,我确实相信你。我找不到您第一次提出该内容以提供链接的帖子?我以为是在 C#/.NET gotcha 线程中。
    【解决方案3】:

    如果 myObject 参数为 null,那么您将无法对其调用 GetType()。将抛出 NullReferenceException。否则,我想你会没事的。

    【讨论】:

      【解决方案4】:

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

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

      我想除此之外,您所能得到的只是“未设置为对象的实例”异常(或者可能是它的空引用),因为 MSDN 确实说 INSTANCE。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2012-07-06
          • 2016-10-17
          • 2010-11-10
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多