IList<T1>.Count() is very large number!!!
Да, это означает, что независимо от того, какой синтаксис сахара вы используете, преобразование не будет требовать вывода хранения (п) и O (п). Вы не можете использовать этот список, чтобы избежать его повторного создания. Если это возможно, клиентский код может добавить элемент списка BaseT1 в список, нарушая обещание, что список содержит только объекты, совместимые с T1.
Единственный способ продвижения - вернуть тип интерфейса, который не может изменить список. В этом случае это будет IEnumerable<BaseT1>
. Позволяя вам перебирать список, ничего больше. Это преобразование происходит автоматически в .NET 4.0 благодаря поддержке ковариации. Вам придется написать немного кода клея в более ранних версиях:
public static IEnumerable<BaseT1> enumerate(IList<T1> p) {
foreach (BaseT1 item in p) yield return item;
}
IList = System.Collections.Generic.IList – SkyN