我使用的语言是C#.
让我们有一个类型的对象列表T,
List<T> collection = new List<T>{.....};
Run Code Online (Sandbox Code Playgroud)
假设我们想要查看每个收集项目.这可以通过多种方式完成.其中,有以下两种:
foreach(var item in collection)
{
// code goes here
}
Run Code Online (Sandbox Code Playgroud)
和
foreach(T item in collection)
{
// code goes here
}
Run Code Online (Sandbox Code Playgroud)
第二种方式是否优于第一种方式,为什么?
提前感谢您的回答.
Chr*_*tle 24
它们都完全一样.var为方便起见,是语法糖.它与List遍历的速度没有区别.
我遵循的经验法则var是仅在赋值的右侧存在对象的类型时才使用它,所以在这种情况下我宁愿明确指定类型foreach以使其更清晰其他工程师,但这取决于个人选择.如果将鼠标悬停var在Visual Studio中,它将显示该类型(假设它可以推断出应该是什么).
引用MSDN:
隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型.
所以
var i = 10; // implicitly typed
int i = 10; //explicitly typed
Run Code Online (Sandbox Code Playgroud)
完全一样.
现在,为了"更好" - 它将在很大程度上取决于您的参数来判断它.如果它的速度,然后for循环可能会比一个更好foreach,而T[]不是更好List<T>,根据帕特里克Smacchia.要点:
forList上的foreach循环比List上的循环便宜2倍多.foreach(我相信,这就是我们所做的).引用来源:在.NET中,哪个循环运行得更快,'for'或'foreach'?
参考:http://msdn.microsoft.com/en-us/library/bb383973.aspx