Ваш метод в настоящее время принимает object
, что означает, что обнуляемое значение будет помещено в коробку ... и больше не будет обнуляемым значением. Значение o
будет , либо будет значением в штучной упаковке типа, не допускающего значения NULL, либо пустой ссылкой.
Если возможно, измените ваш метод на общий:
public string GetValue<T>(T value)
{
// Within here, value will still be a Nullable<X> for whatever type X
// is appropriate. You can check this with Nullable.GetUnderlyingType
}