В идеале
- Для типов значений я бы хотел, чтобы он действовал так же, как Nullable, с частным логическим полем, указывающим наличие значения.
- Для типов ссылок само значение, нулевое или ненулевое, должно указывать на наличие значения.
Код: Выделить всё
readonly struct Option
{
private readonly T _value;
#if typeof(T).IsValueType // Pseudo-code of course
private readonly bool _hasValue; // Only needed if T is a value type; otherwise, should not be part of the struct layout
#endif
public bool HasValue
{
if(typeof(T).IsValueType)
return _hasValue;
return _value is not null;
}
// ....
}
Если нет, может ли кто-нибудь придумать альтернативную идею для представления как необязательных типов ссылок, так и типов значений, без больших накладных расходов для типов ссылок?
Подробнее здесь: https://stackoverflow.com/questions/783 ... neric-type
Мобильная версия