【发布时间】:2011-09-08 21:39:43
【问题描述】:
可能重复:
Resharper: vars
resharper 是否有理由建议 var thing1 = 5 而不是 int thing1 = 5?似乎它们的意思完全相同,只是 var 对人类读者来说更难/更难理解。我很想知道编译器解释它们的方式是否存在差异,或者它是否只是语法糖。
【问题讨论】:
标签: c# resharper implicit-typing
可能重复:
Resharper: vars
resharper 是否有理由建议 var thing1 = 5 而不是 int thing1 = 5?似乎它们的意思完全相同,只是 var 对人类读者来说更难/更难理解。我很想知道编译器解释它们的方式是否存在差异,或者它是否只是语法糖。
【问题讨论】:
标签: c# resharper implicit-typing
ReSharper 建议您使用 var 的原因是它默认配置为这样做。
进入 ReSharper 的选项,在“代码检查”下找到“检查严重性”设置,然后进入该列表,找到标记为“尽可能使用 'var' 关键字”的设置。
ReSharper 将在默认设置为“显示为建议”的情况下,默认建议您使用 var 而不是实际类型,如果:
Type x = new Type(...);)int x = 5;)对其进行初始化在这两种情况下,ReSharper 都被编程为假定您无论如何都能轻松找到正确的类型,因此您可以使用var。
如果您不希望这样,请更改该设置。您也可以直接在通过 Alt+Enter 获得的下拉菜单中更改该设置,只需选择下拉菜单中的底部项目:
它会弹出一个对话框,询问如何处理该设置:
另请注意,如果您要求 ReSharper 将代码更改为使用 var,它不会建议您将其转回,但您可以再次按 Alt+Enter 并选择选项“明确指定类型”。
【讨论】:
“var”关键字的使用往往会引起争议。本次辩论的“权威”参考是http://blogs.msdn.com/b/ericlippert/archive/2011/04/20/uses-and-misuses-of-implicit-typing.aspx
【讨论】:
不,生成的 IL 将完全相同相同。
我怀疑如果您接受 Resharper 的建议,它也会“建议”另一种方式 - IIRC 默认始终提供向任一方向更改的能力。不过,您可以更改它在选项中的建议。
【讨论】:
var”-使用var-“不,不不,使用int!” -使用int-“不,使用var!”