Ну, во-первых, Nullable<T>
- это структура, поэтому объект как таковой отсутствует.Вы не можете вызвать GetType()
, так как это будет блокировать значение (в этот момент вы либо получите значение NULL и, следовательно, исключение, либо значение, не обнуляемое в штучной упаковке и, следовательно, не тот тип, который вам нужен).
(Бокс - это то, что портит ваше утверждение здесь - я бы предположил, что IsType
принимает object
.)
Вы можете использовать вывод типа, хотя, чтобы получить тип переменной какПараметр типа:
public bool IsNullable<T>(T value)
{
return Nullable.GetUnderlyingType(typeof(T)) != null;
}
Это не очень большое применение, когда вы знаете точный тип во время компиляции, как в вашем примере, но это полезно для обобщений.(Конечно, есть альтернативные способы его реализации.)
Какова ваша реальная ситуация в жизни?Я предполагаю, что это не такое утверждение, учитывая, что вы знаете ответ на этот вопрос во время компиляции.