Resharper:vars

时间:2008-11-17 20:26:23

标签: c# .net resharper

为什么Resharper希望您将大多数变量更改为var类型而不是代码中的实际类型?

8 个答案:

答案 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有助于使代码在方法中更具可读性,尤其是在使用泛型时。

正如乔恩所说,这只是一种选择。