可能重复:
Resharper: vars
有没有理由说resharper建议var thing1 = 5
而不是int thing1 = 5
?它似乎意味着完全相同的东西,除了var对于人类读者来说更难/更难以理解。我很想知道编译器解释它们的方式是否存在差异,或者它是否仅仅是语法糖。
答案 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的下拉列表中更改该设置,只需在下拉菜单中选择底部项目:
然后会弹出一个对话框,询问如何处理该设置:
另请注意,如果您要求ReSharper将代码更改为使用var
,则不会建议您将其转回,但是可以,再次按Alt + Enter选择“明确指定类型”选项。