var vs显式声明

可能重复:
在C#中使用var关键字

嗨,刚搬到工作岗位,我习惯使用var很多。 在我以前的工作中,我们做了大量的TDD和使用resharper。

在这项工作中,他们讨厌第三方工具,这里的开发人员说,一直使用var并不好,而且效率不如显式输入。

前段时间我想的一样,但现在我已经习惯了它,它让我的代码看起来更整洁。

我已经阅读了一些post,但是它是否有效率似乎存在混淆。 我读到使用var生成相同的IL代码。 它应该不那么有效吗? 在其他地方,我读到即使使用var生成相同的IL代码,它也必须找出它是什么类型。 那么“推断”究竟意味着什么呢?

关于性能是否相同的一些澄清将是非常棒的。

就执行时间效率而言,它没有任何区别。 它确实被编译成完全相同的IL。 变量仍然是静态类型的,只是从初始化表达式推断出类型。

“推断”是指“从其他信息中解决”。 因此,如果声明是:

 string x = "hello"; 

变量x 显式声明为string类型。 编译器不需要做任何事情。 如果你使用var

 var x = "hello"; 

然后编译器找到所分配表达式的编译时类型,并使其成为变量的类型。 x仍然是代码中其他地方的字符串变量。

如果您正在使用的开发人员认为var动态行为,我会非常谨慎地告诉您其他信息。 在判断新语言function之前,您可能需要谨慎地建议他们更多地了解新语言function的工作原理。

开发人员效率而言,这是一个更难判断的问题。 我个人使用var – 特别是在测试中 – 但不是到处都是。

varcompilation期间被转换为精确类型。根据我的知识,效率没有问题。

此代码的IL如下所示:

 class Foo { void Bar() { var iCount = 0; int iCoount1 = 0; } } 

替代文字