public class A {} public class B : A {}
теперь, каков наилучший способ заставить это работать
List<A> a; List<B> b = new List<B>(); a = b; // throw Cannot convert List<B> to List<A>
Спасибо
Тип List<T> не поддерживает ковариацию, поэтому вы не можете назначить List<B> непосредственно для List<A>, даже если сам B непосредственно назначен A.Вам нужно будет пройти список b, преобразовав и добавив элементы в список a по мере продвижения.Метод ConvertAll - удобный способ сделать это:
List<T>
List<B>
List<A>
B
A
b
a
ConvertAll
List<B> b = new List<B>(); // ... List<A> a = b.ConvertAll(x => (A)x);