相关疑难解决方法(0)

在C#中使用var关键字

在与同事讨论了在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 type-inference

406
推荐指数
32
解决办法
13万
查看次数

C#中'var'的邪恶?

可能重复:
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应该如此丰富地使用吗?
  • 你认为var应该用于匿名类型以外的任何东西吗?
  • 是否可以在发布到博客的代码中使用以保持简洁......简洁?(不确定这个问题的答案......也许是免责声明)
  • 作为一个社区,我们是否应该鼓励更好地使用强类型变量来提高代码清晰度,或者让C#变得更模糊,更少描述?

我想知道社区的意见.我看到var使用了很多,但我很少知道为什么,并且有一个很好的理由(即简洁/简洁).

anonymous-types c#-3.0

9
推荐指数
4
解决办法
9633
查看次数

标签 统计

anonymous-types ×1

c# ×1

c#-3.0 ×1

type-inference ×1

var ×1