var vs显式声明
可能重复:
在C#中使用var关键字
嗨,刚搬家的工作,我习惯使用var
很多。 在我以前的工作中,我们正在做大量的TDD并使用resharper。
在这份工作中,他们讨厌第三方工具,这里的开发人员说,一直使用var
并不是很好,它不像显式类型那样高效。
前一段时间,我认为是相同的,但现在我已经习惯了它,它使我的代码更加整洁。
我已经阅读了一些文章,看起来似乎是混淆了它是否有效。 我读过使用var
产生相同的IL代码。 那么它不应该如此高效? 我读过的其他地方,即使使用var
产生相同的IL代码,它也必须找出它的类型。 那么“推断”到底是什么意思呢?
一些关于性能是否相同的说法会很棒。
在执行时间效率方面,没有区别。 它确实被编译成完全相同的IL。 该变量仍然是静态类型的,只是从初始化表达式推断出该类型。
“推断”是指“根据其他信息制定”。 所以如果声明是:
string x = "hello";
变量x
被显式声明为string
类型。 编译器不需要处理任何东西。 如果你使用var
:
var x = "hello";
那么编译器会找到正在分配的表达式的编译时类型,并确定该变量的类型。 x
仍然是代码中其他地方的字符串变量。
如果你正在使用的开发者认为这个var
动态的,那么我会对他们告诉你的其他信息非常谨慎。 你可能要谨慎地建议他们在判断它们之前多学习一些新的语言特征。
就开发者效率而言,这是一个很难判断的问题。 就个人而言,我使用相当多的var
- 特别是在测试中 - 但并非到处都是。
var
在compilation
期间被转换为精确类型。根据我的知识,效率没有问题。
IL代码如下所示:
class Foo
{
void Bar()
{
var iCount = 0;
int iCoount1 = 0;
}
}
链接地址: http://www.djcxy.com/p/53805.html
上一篇: var vs explicit declaration
下一篇: What advantages does using var have over the explicit type in C#?