Как переопределить общий метод с аннотациями, допускающими значение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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