在与同事讨论了在C#3中使用'var'关键字后,我想知道人们对通过var的类型推断的适当用途有什么看法?
例如,我在可疑情况下懒得使用var,例如: -
foreach(var item in someList) { // ... } // Type of 'item' not clear.
var something = someObject.SomeProperty; // Type of 'something' not clear.
var something = someMethod(); // Type of 'something' not clear.
Run Code Online (Sandbox Code Playgroud)
var的更合理用途如下: -
var l = new List<string>(); // Obvious what l will be.
var s = new SomeClass(); // Obvious what s will be.
Run Code Online (Sandbox Code Playgroud)
有趣的是LINQ似乎有点灰色,例如: -
var results = from r in dataContext.SomeTable
select r; // Not *entirely clear* what results will be …Run Code Online (Sandbox Code Playgroud) 可能重复:
C#'var'关键字与明确定义的变量
对于仍在观看此事的人,我完全改变了对var的看法.我认为这主要是由于我对这个主题的回应.我现在是一个狂热的'var'用户,我认为它的支持者评论在几乎所有情况下都是绝对正确的.我认为我最喜欢var的是它真的可以减少重复(符合DRY),并使你的代码更加清晰.它支持重构(当你需要更改某些东西的返回类型时,你需要更少的代码清理来处理,并且不,不是每个人都有一个花哨的重构工具!),并且有趣的是,人们似乎并没有真正的问题不知道前面变量的具体类型(它很容易"发现"按需类型的功能,这通常是必要的,即使你知道类型的名称.)
所以这里有一个大的鼓掌的"变种"的关键字!
这是一个相对简单的问题......更多的是民意调查.我是C#的巨大粉丝,自从.NET首次发布之前已经使用了8年多.我喜欢对语言所做的所有改进,包括lambda表达式,扩展方法,LINQ和匿名类型.但是,C#3.0有一个功能我觉得被SORELY误用了......'var'关键字.
自从C#3.0发布以来,在博客,论坛和是,甚至Stackoverflow上,我已经看到var替换了几乎所有已编写的变量!对我来说,这是对该功能的严重滥用,并导致非常随意的代码,由于缺乏变量实际类型的清晰度,因此可能存在许多混淆的错误.
'var'只有一个真正有效的用途(至少在我看来).你问,这有效用途是什么?唯一有效的用途是当您无法知道类型时,以及可能发生这种情况的唯一实例:
访问匿名类型时
匿名类型没有编译时标识,因此var是唯一的选项.这是添加var的唯一原因......支持匿名类型.
那么......你的意见是什么?鉴于var在博客,论坛上的大量使用,由ReSharper等工具建议/强制执行,许多新兴开发人员将其视为完全有效的东西.
我想知道社区的意见.我看到var使用了很多,但我很少知道为什么,并且有一个很好的理由(即简洁/简洁).