我有以下代码
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);
}
}
我最初尝试传递一个 List 但这不起作用。经过SO的大量帮助后,我发现传递 IEnumerable 是将对象作为 .ofType(IB) 传递的唯一方法。
对我来说不幸的是,在我的代码中,以下行将被执行数千次:
aList.Cast<IB>();
我想知道是否有人知道它是如何通过算法实现的(在 IL 中)以及它的时间顺序是什么。
也就是说,它是否比只强制转换每个项目的 foreach 循环更快,或者这正是它的作用?
编辑主类需要维护一个实际对象的列表。但读者只能通过界面触摸它们。