可能重复:
C# 'var' 关键字与显式定义的变量
编辑:
对于那些还在看这个的人,我已经完全改变了我对 var 的看法。我认为这主要是由于我对这个话题的反应。我现在是一个狂热的“var”用户,我认为下面的支持者评论在几乎所有情况下都是绝对正确的。我认为我最喜欢 var 的一点是它确实减少了重复(符合 DRY),并使您的代码相当干净。它支持重构(当您需要更改某些东西的返回类型时,您需要处理的代码清理工作较少,而且不,不是每个人都有花哨的重构工具!),而且有趣的是,人们似乎并没有真正遇到问题预先不知道变量的具体类型(它很容易按需“发现”类型的功能,无论如何这通常是必需的,
所以这里是对“var”关键字的热烈掌声!!
这是一个相对简单的问题……实际上更像是一个民意调查。我是 C# 的忠实拥护者,自从 .NET 首次发布之前,我已经使用它超过 8 年了。我喜欢对语言所做的所有改进,包括 lambda 表达式、扩展方法、LINQ 和匿名类型。但是,我觉得 C# 3.0 中的一项功能被严重滥用了……'var' 关键字。
自 C# 3.0 发布以来,在博客、论坛,是的,甚至 Stackoverflow 上,我已经看到 var 替换了几乎所有已编写的变量!对我来说,这是对该功能的严重滥用,并且由于不清楚变量实际上是什么类型而导致非常任意的代码可能包含许多混淆错误。
'var' 只有一个真正有效的用法(至少在我看来)。你问这个有效的用途是什么?唯一有效的用途是当您无法知道类型时,以及唯一可能发生这种情况的情况:
访问匿名类型时
匿名类型没有编译时标识,因此 var 是唯一的选择。这是添加 var 以支持匿名类型的唯一原因。
那么……你的意见是什么?鉴于 var 在博客、论坛上的大量使用,由 ReSharper 等工具建议/强制执行,许多新兴开发人员会将其视为完全有效的东西。
- 你认为 var 应该被大量使用吗?
- 你认为 var 应该用于匿名类型以外的任何东西吗?
- 是否可以在发布到博客的代码中使用以保持简洁……简洁?(我自己不确定这个答案……也许有免责声明)
- 作为一个社区,我们应该鼓励更好地使用强类型变量来提高代码清晰度,还是让 C# 变得更加模糊和更少描述性?
我想知道社区的意见。我看到 var 使用了很多,但我不知道为什么,也许有一个很好的理由(即简洁/简洁。)