使用 var 运算符而不是类类型 [重复]

Posted

技术标签:

【中文标题】使用 var 运算符而不是类类型 [重复]【英文标题】:Use var operator instead of class type [duplicate] 【发布时间】:2011-04-16 15:04:56 【问题描述】:

可能重复:Use of var keyword in C#

我在 Visual Studio 中使用 resharper。每次我创建类实例时,resharper 都建议我使用 var 而不是确切的类类型。为什么使用 var 运算符更合适?

【问题讨论】:

我注意到“var”不是运算符。它是一个局部变量类型说明符 【参考方案1】:

ReSharper 建议您通过 context action 使用 var。

ReSharper 中的上下文操作(通常由铅笔图标指定)与 IntelliJ IDEA 中的意图操作非常相似,如果您愿意,您可以使用它,但这并不是强制性的。这与专门用于修复 ReSharper 发现的代码问题的 quick-fix(黄色或红色灯泡)相反。

当 ReSharper 用户看到 ReSharper 建议使用 var,然后(一旦您接受该建议)再次建议使用显式类型说明符时,ReSharper 用户一次又一次地感到震惊。但考虑到上下文动作的性质,像这样拥有一对相反的上下文动作是完全可以的,ReSharper 有很多这样的动作。

如果您不希望 ReSharper 显示此特定上下文操作,可以在 ReSharper > 选项 > [语言] > 上下文操作中将其关闭

【讨论】:

顺便说一句,在不同场景中使用或不使用 var 是您可以使用 ReSharper 的代码清理以批处理模式强制执行的操作。 创建自定义代码清理配置文件,将“局部变量声明样式”设置为“仅当初始化程序具有类型使用时使用'var'”,并将配置文件应用于自定义选择。详情请见jetbrains.com/resharper/webhelp/…【参考方案2】:

对于初学者来说,重复更少。你更喜欢哪一个:

IDictionary<string, object> foo = new SortedDictionary<string, object>();

var foo = new SortedDictionary<string, object>();

就个人而言,我发现后者更具可读性。

【讨论】:

是的,当使用构造函数时。但是 var foo = SomeFunction(someparameter);不是很可读。我更喜欢以前的。

以上是关于使用 var 运算符而不是类类型 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C# 如何检查空值。 (值为空)或(空 == 值)。我们可以使用`is`运算符而不是==运算符[重复]

C#如何检查null。 (value为null)或(null == value)。我们可以使用`is`运算符而不是==运算符[重复]

BOOL类型和引用,三目运算符

在 php 中使用 === 而不是 == 的重要性! [复制]

Resharper 自定义模式变量

PHP 中的 !== 和 != 有区别吗?