当前位置:  开发笔记 > 编程语言 > 正文

C#'var'关键字与明确定义的变量

如何解决《C#'var'关键字与明确定义的变量》经验,为你挑选了3个好方法。

我目前正在使用ReSharper的30天试用版,到目前为止,我对它的建议印象深刻.然而,一个建议让我感到困惑.

当我明确定义变量时,例如:

List lstString = new List();

ReSharped添加了一条波浪形的绿线并告诉我:

使用隐式类型本地变量声明.

如果我按照其建议,ReSharper将代码行更改为:

var lstString = new List();

那么,从改变List到a 是否会有某种性能提升var,或者这仅仅是ReSharper的一个特点?我一直被教导明确定义变量而不是使用动态更为优化.



1> Konrad Rudol..:

那么,将List更改为var是否会带来某种性能提升

不,但这不是重构的唯一正当理由.更重要的是,它消除了冗余并使代码更短而没有任何清晰度损失.

我一直被教导明确定义变量而不是使用动态更为优化.

你误解了什么var意思.这绝不是动态的,因为它产生相同的输出.它只是意味着编译器自己计算变量的类型.它显然能够这样做,因为这是用于测试类型安全性和正确性的相同机制.

它还删除了完全无用的代码重复.对于简单类型,这可能不是很多.但考虑一下:

SomeNamespace.AndSomeVeryLongTypeName foo = new SomeNamespace.AndSomeVeryLongTypeName();

显然,在这种情况下,加倍名称不仅是不必要的,而且实际上是有害的.



2> Mehrdad Afsh..:

不.它们发出完全相同的IL.

这只是一种风格问题.

var有一个好处,使您更容易更改函数的返回类型,而无需更改源代码的其他部分.例如,将返回类型更改IEnumerableList.但是,它可能会更容易引入错误.


实际上,这是对var的不良使用.只有当类型从上下文中不言自明时才应该使用它.如果您可以在不更改其名称的情况下更改方法的返回类型,则不应使用var,因为所涉及的类型不明显.
使用var作为模糊符号会严重降低可读性和可理解性.在阅读代码时快速掌握对象的类型可以更快更好地理解.
我同意斯蒂芬的观点.当你可以写double,int,float,string,Page时,我不是不必要的var的粉丝.我只在非常长的类型名称和匿名类型上使用var.var通常会降低可读性

3> Matt Brunell..:

var关键字实际上并不具有动态类型声明一个变量.变量仍然是静态类型的,它只是从上下文中推断出类型.

当你有一个很长的类型名时它是一个很好的快捷方式(通用类型名称可以很长)

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有