【发布时间】:2013-12-26 16:36:55
【问题描述】:
我使用的语言是 C#。
让我们有一个T类型的对象列表,
List<T> collection = new List<T>{.....};
假设我们要遍历集合中的每个项目。这可以通过多种方式完成。其中,有以下两种:
foreach(var item in collection)
{
// code goes here
}
和
foreach(T item in collection)
{
// code goes here
}
第二种方法比第一种更好吗?为什么?
提前感谢您的回答。
【问题讨论】:
-
exactly the same -
在运行时没有
var这样的东西。两者将发出相同的编译代码。 -
唯一需要注意的是,当您创建
foreach时,如果您做了一些导致编译器对该类型发出强制转换操作的操作。例如,List<object> o;foreach (string i in o)将添加 IL 调用以尝试将迭代器的当前项转换为字符串。这是对支持旧 .NET 集合的回归。 -
一种更快的方法可能是使用
for而不是foreach,我已经读到它在某些条件下确实表现更好。 -
测量并找出答案。 您已经以两种方式编写了代码;现在运行它,看看哪个更快。