【发布时间】:2009-03-03 15:44:54
【问题描述】:
我有以下代码
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);
}
}
我最初尝试传递一个列表,但 doesn't work。 经过SO 的大量帮助后,我发现传递 IEnumerable 是将对象作为 .ofType(IB) 传递的唯一方法。
不幸的是,在我的代码中,以下行将被执行数千次:
aList.Cast<IB>();
我想知道是否有人知道它是如何通过算法实现的(在 IL 中)以及它的时间顺序是什么。
也就是说,它是否比只强制转换每个项目的 foreach 循环更快,或者这正是它的作用?
EDIT 主类需要维护一个实际对象的列表。但读者只能通过界面触摸它们。
【问题讨论】:
标签: c# performance casting generic-list