Вы когда-нибудь пытались использовать метод Convert.ChangeType()
для преобразования значения в тип Nullable<T>
? Неловко, он будет бросать InvalidCastException
, говоря: "Объект Null не может быть преобразован в тип значения".
Попробуйте запустить это в ближайшем окне: ?System.Convert.ChangeType(null, typeof(int?))
По какой-то непонятной причине Nullables рассматриваются как типы значений. Например, typeof(int?).IsValueType
возвращает true
.
Для меня, поскольку Nullable<T>
accept null
, это тип класса, а не тип значения. Кто-нибудь знает, почему это было бы реализовано по-другому?