Как из метода GetValue() возвратить значение типа Nullable .
При этом я хотел бы обеспечить возможность передавать в качестве универсального типа <T> как типы значений, так и ссылочные типы.
Упрощенный пример, отражающий суть проблемы:
class DataStructure <T>
{
private T Value { get; set; }
Nullable<T> GetValue()
{
// В данном методе нужно из не Nullable Т-типа получить Nullable<T>
// Приведенный ниже способ VisualStudio подчеркивает как ошибку.
return this.Value as T?;
}
}
использование метода Convert.ChangeType() задачу также решить не помогло:
class DataStructure <T>
{
private T Value { get; set; }
Nullable<T> GetValue()
{
// Приведенный ниже способ VisualStudio подчеркивает как ошибку.
return (T?)Convert.ChangeType(value, typeof(T?));
}
}
Nullable<T> имеет смысл только для структур. Вам нужно добавить ограничение на T:
class DataStructure<T> where T: struct
В этом случае преобразование между T? и T станет тривиально, и компилятор сам сможет его выполнить:
Nullable<T> GetValue()
{
return Value;
}
А использовать Nullable<T> для ссылочных типов T невозможно.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей