Ковариантные типы возвращаемых значений и интерфейсы C# 9.0C#

Место общения программистов C#
Anonymous
Ковариантные типы возвращаемых значений и интерфейсы C# 9.0

Сообщение Anonymous »

У меня есть два примера кода:
Один компилируется

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

class C {
public virtual object Method2() => throw new NotImplementedException();
}

class D : C {
public override string Method2() => throw new NotImplementedException();
}
Другого нет

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

interface A {
object Method1();
}

class B : A {
public string Method1() => throw new NotImplementedException();
}
Ошибка CS0738 «B» не реализует элемент интерфейса «A.Method1()». «B.Method1()» не может реализовать «A.Method1()», поскольку он не имеет соответствующего возвращаемого типа «объекта». ConsoleApp2 C:\Projects\Experiments\ConsoleApp2\Program.cs 14 Активно

Как ковариантные типы возврата работают в C# 9.0 и почему они не работают с интерфейсами?

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