【发布时间】:2012-06-21 00:09:16
【问题描述】:
object[] objArray = new object[]{"blah", 4, "whatever"};
foreach(var value in objArray) vs. foreach(object value in objArray)
我很好奇它们之间的区别是什么,除了 var 在分配后必须保持其类型。这个比那个好吗?谢谢。
【问题讨论】:
object[] objArray = new object[]{"blah", 4, "whatever"};
foreach(var value in objArray) vs. foreach(object value in objArray)
我很好奇它们之间的区别是什么,除了 var 在分配后必须保持其类型。这个比那个好吗?谢谢。
【问题讨论】:
在你的例子中没有。但是,
当声明 objects 时,你会得到:
Boxing and Unboxing
但是。使用 var 时,它的编译方式与您指定的确切类型名称完全相同。
所以var tempval = 5; 与int tempval = 5; 相同
【讨论】:
从纯粹的功能角度来看,var 在这里只是object 的快捷方式,因为objArray 的元素是声明类型object。
使用object 是向正在阅读代码的人表明数组中的项目不知道是比object 更具体的任何类型的信号。使用var 并不意味着这一点。在您发布的最小情况下,您使用哪个程序的清晰度确实没有任何区别。
另一方面,如果从上下文中不能立即清楚您正在使用什么类型的对象,那么显式声明该类型可能是有利的。另一方面,如果您正在迭代的集合元素的类型是冗长且突兀的,那么使用var 可能是有利的,这样读者的眼睛就会被代码的逻辑所吸引,而不是而不是一堆泛型参数。
【讨论】:
这两者之间没有区别,在这种情况下var 将是object。
【讨论】:
var 与任何其他类型的唯一区别是您让编译器确定类型。
【讨论】: