Почему компилятор С# не разрешает параметры полиморфного типа (T) в общих коллекциях (т.е. List [T])?
Возьмите класс "A" и "B" , например, где "B" является подклассом "A"
class A { }
class B : A { }
и рассмотрим функцию, которая принимает список типов "A"
void f(List<A> aL) { }
который вызывается со списком типа "B"
List<B> bL = new List<B>();
f(bL);
Приведена следующая ошибка:
ERROR: cannot convert from List<B> to List<A>
Какое семантическое правило нарушается?
Также есть "элегантное" средство для этой цели, кроме цикла и литья каждого элемента (я хочу, пожалуйста, немного сахара)? Спасибо.