C# 使用var运算符而不是类类型

C# 使用var运算符而不是类类型,c#,resharper,C#,Resharper,可能重复: 我在VisualStudio中使用resharper。每次我创建类实例时,resharper都建议我使用var而不是确切的类类型。为什么使用var运算符更合适?对于初学者来说,重复次数更少。你更喜欢哪一个: IDictionary<string, object> foo = new SortedDictionary<string, object>(); IDictionary foo=new SortedDictionary(); 或 var foo=n

可能重复:


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

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

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

var foo=newsorteddictionary();

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

ReSharper建议您通过

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

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


如果不希望ReSharper显示此特定的上下文操作,则可以在使用构造函数时,在ReSharper>选项>[语言]>上下文操作中将其关闭。但是var foo=SomeFunction(someparameter);它的可读性不强。我更喜欢前面的方法。我注意到“var”不是运算符。它是一个局部变量类型说明符。顺便说一句,在不同的场景中使用或不使用var,您可以使用ReSharper的代码清理在批处理模式下强制执行。创建自定义代码清理配置文件,将“局部变量声明样式”设置为“仅当初始值设定项具有类型用法时使用“var”,并将配置文件应用于自定义选择。详情请参阅
var foo = new SortedDictionary<string, object>();