Просто любопытный.
Есть ли любое время при вызове .GetType()
на объекте возврат аннулирует?
Гипотетическое использование:
public Type MyMethod( object myObject )
{
return myObject.GetType();
}
GetType для объекта никогда не может возвращать null - по крайней мере, это будет объект типа. если myObject имеет значение null, вы все равно получите исключение, если попытаетесь вызвать GetType ()
Нет, он не вернет 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
.
(Кредит оригинальной концепции Марку Грейвеллу.)
http://msdn.microsoft.com/en-us/library/system.object.gettype (VS.85) .aspx
MSDN только перечисляет объект типа как возвращаемое значение.
Я полагаю, кроме этого все, что вы можете получить, это исключение «не установлен для экземпляра объекта» (или, возможно, его пустая ссылка), потому что MSDN действительно говорит INSTANCE.
Если параметр myObject имеет значение null, вы не сможете вызвать для него GetType (). Будет выброшено исключение NullReferenceException. В противном случае, я думаю, у вас все будет хорошо.
По сути, нет, он не может (никогда не возвращать null) и не будет.