可能重复:
在C#中使用var关键字
嗨,刚刚搬了工,我已经习惯var了很多.在我以前的工作中,我们做了大量的TDD和使用resharper.
在这项工作中,他们讨厌第三方工具,这里的开发人员说,一直使用并不好,var而且效率不如显式打字.
前段时间我想的一样,但现在我已经习惯了它,它使我的代码看起来更整洁.
我已经阅读了一些帖子,似乎是否有效率的混淆.我读到使用var生成相同的IL代码.它应该不那么有效吗?在其他地方,我读到即使使用var产生相同的IL代码,它必须找出它是什么类型.那么"推断"究竟意味着什么呢?
关于性能是否相同的一些澄清将是非常棒的.
Jon*_*eet 42
就执行时间效率而言,它没有任何区别.它确实被编译成完全相同的IL.变量仍然是静态类型的,只是从初始化表达式推断出类型.
"推断"是指"根据其他信息制定".因此,如果声明是:
string x = "hello";
Run Code Online (Sandbox Code Playgroud)
变量x被明确声明为类型string.编译器不需要做任何事情.如果您使用var:
var x = "hello";
Run Code Online (Sandbox Code Playgroud)
然后编译器发现被分配表达式的编译时类型,并且使该变量的类型.x仍然知道代码中的其他地方都是字符串变量.
如果您正在使用的开发人员认为var其动态行为,我会非常谨慎地告诉您其他信息.在判断新语言功能之前,您可能需要谨慎地建议他们更多地了解新语言功能的工作原理.
就开发人员效率而言,这是一个更难判断的问题.就个人而言,我使用了var 很多 - 特别是在测试中 - 但并非到处都是.
varcompilation根据我的知识,在效率问题上没有转换为精确类型.
此代码的IL如下所示:
class Foo
{
void Bar()
{
var iCount = 0;
int iCoount1 = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
