在我的理解中,C#以静态语言开始,并在.NET框架中进行了一些增强,并开始支持语言的动态特性。
我认为" var" c#中的关键字在运行时加载DLL时非常强大,而且我们不知道类型的方式,它非常有用。
但我认为如果变量在设计时被声明为var,则会带来确定变量类型的开销。现在,通过做一些不错的建议,重新锐化,这有助于使我们的代码更好,更干净,建议我如下:
我的代码如下所示:
StatusResult result = new StatusResult();
Resharper建议必须将其转换为
var result = new StatusResult();
为什么?当我认为这不是一个好主意时,为什么我应该购买resharper的建议呢?或者可能是我错了?
答案 0 :(得分:4)
这主要是基于意见的问题,但有一个问题值得解决: 区分类型推断和动态类型是非常重要的。
在dynamic i = 0;
中,i
被声明为动态变量,其类型仅在运行时解析。这可能会导致开销。
在var i = 0;
i
中将声明为int 。 var
关键字仅表示编译器在编译时推断出变量类型。由于var i = 1;
和int i = 1
编译为同一组指令,因此没有“设计时”类型推断开销。它与动态类型无关。
答案 1 :(得分:3)
关于你的问题,
为什么?当我认为这不是一个好主意时,为什么我应该购买resharper的建议呢?
根据我的经验,这是我的意见。有些人接受这个特别的建议:
现在,如果代码行是:
var result = GetStatusResult(); // A method call
我个人不会使用var,因为维护者现在需要了解GetStatusResult()以查看var是什么。
在一天结束时,这是个人决定,除非您必须遵循编码标准,在这种情况下,您应该游说改变标准或者只是同意它。
作为旁注,正如Benesh在下面提到的那样,var!= dynamic。我认为这是var变得糟糕的说法。加上我在上面提供的不使用它的例子中的过度使用。