迭代对象数组; foreach(var ... vs. foreach(object

时间:2012-06-19 00:04:54

标签: c# arrays object foreach

object[] objArray = new object[]{"blah", 4, "whatever"};

foreach(var value in objArray) vs. foreach(object value in objArray)

我很好奇这些之间的区别是什么,除了var之外必须保留它的类型。这个比那个好吗?谢谢。

4 个答案:

答案 0 :(得分:4)

从纯粹的功能角度来看,var只是此处object的快捷方式,因为objArray的元素属于声明类型object

使用object表示无论谁在阅读代码时,都不知道数组中的项目是否比object更具体。使用var并不意味着这一点。在您发布的最小情况下,它对您使用的程序的清晰度没有任何影响。

另一方面,如果从上下文中不能立即清楚您正在使用哪种类型的对象,那么显式声明该类型可能是有利的。另一方面,如果你正在迭代的集合的元素类型是冗长和突兀的,那么使用var可能是有利的,这样读者的眼睛就会被吸引到逻辑中。代码而不是一堆通用参数。

答案 1 :(得分:1)

var和任何其他类型之间的唯一区别是让编译器确定类型。

答案 2 :(得分:1)

这两者之间没有区别,var在这种情况下会object

答案 3 :(得分:1)

在你的例子中没有。但是,

宣告objects时,您获得: Boxing and Unboxing

然而。使用var时,它的编译方式与指定确切类型名称完全相同。

因此var tempval = 5;int tempval = 5;

相同