使用var有任何副作用吗?

时间:2011-07-25 20:09:26

标签: c# var

  

可能重复:
  C# 'var' vs specific type performance

如果我写行

,是否有任何性能成本(在类型转换方面等)
SqlConnection c = new SqlConnection(connectionString))

as

var c = new SqlConnection(connectionString))

3 个答案:

答案 0 :(得分:8)

没有。编译的IL是相同的。

唯一潜在的副作用是在继承的情况下,如果您的变量定义是基类,并且您实例化了一个子类。如果你这样做:

 BaseClass item = new DerivedClass();

这可能与以下行为不同:

 var item = new DerivedClass();

这是因为第二个编译为:

 DerivedClass item = new DerivedClass();

在大多数情况下,它应该表现相同(由于Liskov substitution principle)。但是,如果DerivedClass使用method hiding,则行为可能会发生变化。

答案 1 :(得分:1)

没有。编译器在编译时知道var应该是什么(new SqlConnection的返回实际上是SqlConnection。当编译器知道右侧的类型时,您可以使用{ {1}}。

这没有运行时性能影响

答案 2 :(得分:0)

我相信var是在编译时处理的,所以它只是编写代码的快捷方式。这意味着编译版本是相同的。