C# var keyword usage
Possible Duplicates:
What to use: var or object name type?
Use of var keyword in C#
What’s the point of the var keyword?
Should I always favour implictly typed local variables in C# 3.0?
号
我刚刚安装了一个Resharper的试用版来为我的公司评估它。我注意到的一件事是建议我更改以下内容(虚构的示例):
到
号
声明变量时使用var关键字而不是使用对象类型是最佳实践吗?它有什么好处呢?对于上下文,我以前是Java开发人员,刚刚转入.NET Works.
- 我想这可以回答你的问题:stackoverflow.com/questions/17032/…
- 重复项:stackoverflow.com/questions/209199/…和stackoverflow.com/questions/236878/…
- stackoverflow.com/questions/41479/use-of-var-keyword-in-c
- 这仍然是一个很好的问题,当它被问到最后几次…
- @没有执照:很多人给出了很好的答案,包括更深刻的见解——因此,人们也应该去阅读它们。没有人投反对票。
- 这里的答案并没有另一条线索中的答案那么好或那么深,这就是为什么人们发布所有这些评论的原因。
- @未经许可:我的问题可以归结为:"如果在5年时间内,这个问题的答案有15份不同深度的副本,那么对于寻找问题最佳答案的人来说,这是好是坏?"
- 微软确实对var提供了一些指导。请参阅msdn.microsoft.com/en-us/library/bb384061.aspx和msdn.microsoft.com/en-us/library/ff926074.aspx中的隐式类型局部变量部分。
我认为使用var可以使代码更容易阅读,这对我来说意味着var正在替换的类型必须是完全明显的。
例如,这将是var的一个很好的用法(人为示例):
1
| var thing = new Dictionary <int, KeyValuePair <string, int>>(); |
然而,这将是对var的一个错误使用:
1
| var thing = GetThingFromDatabase(); |
我发现它在某些类型声明很长的情况下很有用,例如:
1
| Dictionary <int, string> item = new Dictionary <int, string>(); |
变成
1
| var item = new Dictionary <int, string>(); |
这意味着同样的事情,因为使用var关键字,变量是隐式类型的,编译器在构建时推断类型。我更喜欢指定类型,而不是在大多数情况下使用var,因此我更改了resharper设置。
- -1:提问者知道这一点,并想知道在什么基础上决定坠落的方向。
- 我不认为我的回答是无用的,但值得投反对票。
- 好吧,投反对票没有结果——似乎其他人也有类似的看法(或者他们是想反驳我的"污秽"?我给它-1来反驳一个单一的+1的时间-我相信答案不加太多不是世界末日,只要他们保持在零,不可能使它需要更长的时间来得到一个真正有洞察力的答案说。请看,stackoverflow.com/questions/1205329/c-var-keyword-usage/&hellip;也有一个原因让我的+1和其他人的。
- 就我个人而言,我只会否决错误或误导性的答案,但这取决于你。这个问题是关于最佳实践的,所以答案是主观的。我说在大多数情况下我更喜欢解释性类型变量。正如代码演讲者所说,当类型分离很长时,它看起来会更整洁,在这种情况下,我可能会使用var来提高可读性。
- 我得到的是,在"最佳实践"问题上,答案实际上是"取决于",说"是"或"否"是不够的-它需要是"我总是选择Y/N,因为….[,即使我知道一些人说…-我不同意,因为…。不过,在本文中,resharper设置点是一个独特且有用的点……我将在成熟的思考的基础上,真的进行翻牌和+1!
我记得,雷斯哈珀只是说可以这样写。它没有说你应该。
很多建议都是我第一次看到的建议。就是其中之一。
另一个原因是它说写"this.someproperty"是多余的,而我认为通过这样做代码更容易阅读。
Resharper还建议将if语句转换为true或not true。几乎是一样的,但这取决于您的编码风格。所以,当您发现使用var更舒适时-使用这个建议。