o
может никогда относится к экземпляру Nullable<T>
. Если вы укажете значение типа значения, допускающего значение NULL, вы в конечном итоге получите значение в рамке ненулевого значения базового типа или нулевую ссылку.
Другими словами, o.GetType()
может никогда вернуть Nullable<T>
для любое значение o
- независимо от типа o
. Например:
Nullable<int> x = 10;
Console.WriteLine(x.GetType()); // System.Int32
Здесь мы заканчиваем упаковкой значения x
, потому что GetType()
объявлено в object
и не переопределяется в Nullable<T>
(потому что оно не виртуально). Это немного странно.