Dlaczego kompilator C# nie zezwala na parametry polimorficzne (T) w kolekcjach ogólnych (np. Lista [T])?Polimorficzne parametry typów w kolekcjach ogólnych
Weź klasy 'A' i 'B' na przykład, gdy 'B' jest podklasą 'A'
class A { }
class B : A { }
i rozważyć funkcję, która pobiera listę typu 'A'
void f(List<A> aL) { }
że jest wywoływana z listy typu 'B'
List<B> bL = new List<B>();
f(bL);
następujący błąd jest dany
ERROR: cannot convert from List<B> to List<A>
Jaka zasada semantyczna jest naruszana?
Czy istnieje również "elegancki" środek do tego celu, poza zapętlaniem i odlewaniem każdego elementu (proszę o trochę cukru)? Dzięki.
"Co semantyczny zasada jest łamane?" - zasada zastąpienia Liskov. – millimoose
Jaką wersję programu Visual Studio, C#? – Rake36
@ Rake36 Nie powinno mieć znaczenia, co próbuje OP nie jest po prostu bezpieczne. – millimoose