У меня есть следующий код
class Program
{
static void Main(string[] args)
{
List<A> aList = new List<A>();
var aObj = new A();
aObj.Go(aList.Cast<IB>());
}
}
class A : IB
{
public void Go(IEnumerable<IB> interfaceList)
{
foreach (IB ibby in interfaceList)
{
Console.WriteLine("Here");
}
}
}
interface IB
{
void Go(IEnumerable<IB> interfaceList);
}
}
Изначально я пытался передать список, но не работает .
После большой помощи от SO я обнаружил, что передача IEnumerable - единственный способ передать объекты как .ofType (IB).
К сожалению для меня, в моем коде следующая строка будет выполняться тысячи раз:
aList.Cast<IB>();
Мне было интересно, знает ли кто-нибудь, как это реализовано алгоритмически (в IL) и каков его временной порядок.
То есть, это быстрее, чем цикл foreach, который просто приводит каждый элемент, или это именно то, что он делает?
РЕДАКТИРОВАТЬ Основной класс должен вести список реальных объектов. Но читателю разрешено трогать их только через интерфейс.