C# 使用隐式类型

C# 使用隐式类型,c#,resharper,implicit-typing,C#,Resharper,Implicit Typing,可能重复: resharper建议var thing1=5而不是int thing1=5有什么原因吗?似乎它们的意思完全相同,只是var对人类读者来说更难理解。我想知道编译器解释它们的方式是否有差异,或者只是语法上的差异。不,生成的IL将完全相同 我怀疑如果你接受Resharper的建议,它也会“建议”走另一条路——IIRC默认的做法是始终提供在任一方向改变的能力。不过,您可以在选项中更改它的建议。使用“var”关键字往往会引起争议。本次辩论的“权威”参考是ReSharper建议您使用var的

可能重复:


resharper建议
var thing1=5
而不是
int thing1=5
有什么原因吗?似乎它们的意思完全相同,只是var对人类读者来说更难理解。我想知道编译器解释它们的方式是否有差异,或者只是语法上的差异。

不,生成的IL将完全相同


我怀疑如果你接受Resharper的建议,它也会“建议”走另一条路——IIRC默认的做法是始终提供在任一方向改变的能力。不过,您可以在选项中更改它的建议。

使用“var”关键字往往会引起争议。本次辩论的“权威”参考是

ReSharper建议您使用
var
的原因是,默认情况下,它被配置为这样做

进入ReSharper的选项,在“代码检查”下找到“检查严重性”设置,然后向下进入该列表,找到标记为“尽可能使用'var'关键字”的设置

在默认设置为“显示为建议”的情况下,ReSharper将默认建议您使用
var
而不是实际类型,如果:

  • 您正在构造一个对象(即,
    Type x=new Type(…);
  • 您正在用一个常量初始化它(即
    intx=5;
在这两种情况下,ReSharper都被编程为假设您可以很容易地发现正确的类型,因此您可以使用
var

如果您不想这样,请更改该设置。您也可以在Alt+Enter的下拉菜单中直接更改该设置,只需在下拉菜单中选择底部项目:

它将弹出一个对话框,询问如何处理该设置:


还请注意,如果您要求ReSharper将代码更改为使用
var
,它不会建议您将其返回,但您可以通过再次按Alt+Enter并选择“显式指定类型”选项来实现。哇,ReSharper是一个卑鄙的巨魔。“使用
var
”-使用
var
-“不,不,不,使用
int
!”-使用
int
-“不,使用
var
!”