Может Возразить. GetType () когда-нибудь возвращают пустой указатель?

Просто любопытный.

Есть ли любое время при вызове .GetType() на объекте возврат аннулирует?

Гипотетическое использование:

public Type MyMethod( object myObject )
{
    return myObject.GetType();
}
7
задан nawfal 25 April 2013 в 12:01
поделиться

5 ответов

GetType для объекта никогда не может возвращать null - по крайней мере, это будет объект типа. если myObject имеет значение null, вы все равно получите исключение, если попытаетесь вызвать GetType ()

14
ответ дан 6 December 2019 в 08:43
поделиться

Нет, он не вернет 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 .

(Кредит оригинальной концепции Марку Грейвеллу.)

5
ответ дан 6 December 2019 в 08:43
поделиться

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

MSDN только перечисляет объект типа как возвращаемое значение.

Я полагаю, кроме этого все, что вы можете получить, это исключение «не установлен для экземпляра объекта» (или, возможно, его пустая ссылка), потому что MSDN действительно говорит INSTANCE.

0
ответ дан 6 December 2019 в 08:43
поделиться

Если параметр myObject имеет значение null, вы не сможете вызвать для него GetType (). Будет выброшено исключение NullReferenceException. В противном случае, я думаю, у вас все будет хорошо.

2
ответ дан 6 December 2019 в 08:43
поделиться

По сути, нет, он не может (никогда не возвращать null) и не будет.

0
ответ дан 6 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: