使用隐式类型

时间:2011-06-05 20:56:05

标签: c# resharper implicit-typing

  

可能重复:
  Resharper: vars

有没有理由说resharper建议var thing1 = 5而不是int thing1 = 5?它似乎意味着完全相同的东西,除了var对于人类读者来说更难/更难以理解。我很想知道编译器解释它们的方式是否存在差异,或者它是否仅仅是语法糖。

3 个答案:

答案 0 :(得分:7)

不,生成的IL 完全相同。

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

答案 1 :(得分:5)

'var'关键字的使用往往存在争议。这场辩论的“权威”参考是http://blogs.msdn.com/b/ericlippert/archive/2011/04/20/uses-and-misuses-of-implicit-typing.aspx

答案 2 :(得分:2)

ReSharper建议您使用var的原因是它默认配置为这样做。

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

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

  • 您正在构建一个对象(即Type x = new Type(...);
  • 您使用常量(即int x = 5;
  • 初始化它

在这两种情况下,ReSharper都被编程为假设您无论如何都可以轻松找到正确的类型,因此您可以使用var

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

Alt+Enter dropdown menu

然后会弹出一个对话框,询问如何处理该设置:

Dialogbox

另请注意,如果您要求ReSharper将代码更改为使用var,则不会建议您将其转回,但是可以,再次按Alt + Enter选择“明确指定类型”选项。