Как переопределить общий метод с аннотациями, допускающими значение NULL, в C#?C#

Место общения программистов C#
Anonymous
Как переопределить общий метод с аннотациями, допускающими значение NULL, в C#?

Сообщение Anonymous »

Я пытаюсь добавить поддержку нулевых значений в части существующей базы кода. Одна из областей, которая меня поставила в тупик, — это как переопределить универсальный метод, когда возвращаемое значение имеет аннотацию, допускающую значение NULL.

Код: Выделить всё

#nullable enable
public class Stuff {}

public abstract class Base {
public virtual Stuff? MakeStuff() => null;

public Stuff? MakeStuff2() => null;
}

public abstract class Derived : Base {
public override  Stuff? MakeStuff() => base.MakeStuff();
}
Это приводит к появлению пары сообщений об ошибках, которые мне не совсем понятны:

Ошибка компиляции (строка 26, столбец 29): 'Derived.MakeStuff()': тип возвращаемого значения должен быть 'Stuff', чтобы соответствовать переопределенному элементу 'Base.MakeStuff()'


Ошибка компиляции (строка 26, столбец 29): тип «T» должен быть типом значения, не допускающим значения NULL, чтобы использовать его в качестве параметра «T» в универсальном типе или методе «Nullable».

Все это работает, когда значение NULL не включено.>

Подробнее здесь: https://stackoverflow.com/questions/699 ... ethod-in-c

Вернуться в «C#»