为什么Resharper希望您将大多数变量更改为var类型而不是代码中的实际类型?
答案 0 :(得分:31)
这只是一个选择。你可以禁用它:
ReSharper - >选项 - >代码检查 - >检查严重性 - > Code Redundencies - >尽可能使用'var'关键字:将其更改为“不显示”
还有上下文(灯泡)选项,它将带您进入每个方向 - 这是在ReSharper下 - >选项 - >语言 - > C# - >上下文操作 - > “用'var'替换显式类型声明”
答案 1 :(得分:21)
我看到了Hadi Hariri的视频,他在那里展示了Resharper 6.x.他的推理是,如果你强迫用户使用“var”,你实际上是强迫他以更有意义的方式命名变量,这样所有的名字都是可读的并且更有意义。
答案 2 :(得分:6)
默认情况下,它会为此类型的“绿色波浪”声明:
Person p = new Person();
^^^^^^
因为重复。
当推断它时,它也会建议(小的绿色下划线)变量:
Person p = repository.GetPerson(1);
¯¯¯
在这种情况下,由于GetPerson方法的返回类型,它可能会被推测。
如Jon Skeet所述,您可以在resharper的选项中禁用这些建议。
答案 3 :(得分:5)
回答你的问题......因为JetBrains的某些人认为这是“首选”方式。
要改变它,请按照Jon的回答。此外,您还可以在ReSharper选项的“代码清理”部分下执行代码清理(我经常使用)时更改ReSharper的行为。设置为“使用显式类型”。
答案 4 :(得分:3)
这是关于JetBrains代码检查维基的解释: http://confluence.jetbrains.net/display/ReSharper/Use+%27var%27+keyword+when+initializer+explicitly+declares+type
如果您看到右边的课程,那么也不需要在左侧看到它。如果类名很长,它还可以节省空间并减少代码。就个人而言,我不会将var用于简单类型,如string,int等,但是可以将它用于像var dictionary = new Dictionary<string, int>()
之类的东西来节省空间。
答案 5 :(得分:1)
我认为这表明你们两种方式。 如果您有一个显式类型 - 您可以将其更改为var。如果你有var - 可以将它改为显式。如果您认为适当的话,只是为了让您更快地改变它。
在迭代集合时使用变量(例如,循环变量)可能会很好,等等,当类型为“隐式”时(当然,当Resharper建议时,它总是隐含在编译器中)它的缺席不会使代码的可读性降低。 此外,我喜欢它来缩短一些声明,这些声明可能会随着泛型而变长。 比如,IList(IDictionary(SomeType))myVar = List(IDictionary(SomeType))()如果在赋值的左侧写“var”,则不会松动。
(用尖括号替换parantheses;)
当然,我会小心翼翼地使用变量,以提高可读性,反之亦然。
答案 6 :(得分:1)
对我而言,这绝对物有所值......(即使我必须自己支付)。 但它可以减慢你的VS. 如果您有5000行代码的文件,它可能会变得非常慢。
然而,我仍然没有得到的是为什么我是团队中唯一使用它的人......
答案 7 :(得分:0)
Vars有助于使代码在方法中更具可读性,尤其是在使用泛型时。
正如乔恩所说,这只是一种选择。