Можно ли выключить ковариантность в делегатах c#
Для чего я явно указываю in/out в обобщенных делегатах, если и без этих ключевых слов они вариантны. Можно ли как-то отключить эту вариантность?
del<Child> delegate1 = func; // Contrvariance
del1<Parent> delegate2 = func2; // Covariance
void func(Parent x)
{
Console.WriteLine(x);
}
Child func2()
{
return new Child();
}
class Parent { }
class Child : Parent { }
delegate void del<T>(T item); //without in
delegate K del1<K>(); // without out
Ответы (1 шт):
Автор решения: Hard Core
→ Ссылка
ничего отключить нельзя, in/out используются по принципу "nice to have" (источник: с# 9.0 in nutshell)