У меня есть следующий код
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);
}
}
Первоначально я пытался передать список, но это .aspx" rel="nofollow noreferrer">не работает. После большой помощи от SO я обнаружил, что передача IEnumerable - это единственный способ передать объекты как .ofType(IB).
К сожалению для меня, в моем коде следующая строка будет выполняться тысячи раз:
aList.Cast<IB>();
Мне было интересно, знает ли кто-нибудь, как это реализовано алгоритмически (в IL) и каков его временной порядок.
Другими словами, это быстрее, чем цикл foreach, который просто приводит каждый элемент, или это именно то, что он делает?
EDIT Основной класс должен поддерживать список реальных объектов. Но читателю разрешается прикасаться к ним только через интерфейс.