Не могу сделать Generic Nullable Enum

Есть класс (код немного абстрактный, но абсолютно рабочий):

public class SomeClass<T> where T: System.Enum
{
    public T? SomeProperty { get; } // ошибка
    //     ↑↑
}

Как видно, я хочу иметь Nullable Enum, тип которого передётся при создании экземляра класса.

Как я знаю, Enum сам по себе не может равняться null, почему тогда я не могу использовать Nullable<T> (T?)?


Ответы (1 шт):

Автор решения: Andrew

На сколько я понимаю проблема твоего кода лежит в том, что System.Enum является классом, а использование нуллейбл типов требует от требя использования структур.


Сам энам возможно и не может иметь значение налл, но ты вполне можешь использовать конкретный энам как нуллейбл

public myEnum? instance = null;

если ты не переназначал тип, т.к. по дефолту это инт значения ( т.е. это структура)


В случае с генерик классом можно попробовать взять за основу код отсюда https://stackoverflow.com/a/50351847/4423545 и получить вот это:

//смотри наследование
public class SomeClass<T> where T: struct, System.Enum
{
    public T? SomeProperty { get; }
}
→ Ссылка