代码之家  ›  专栏  ›  技术社区  ›  CSharpAtl

雷沙珀:瓦尔斯

  •  20
  • CSharpAtl  · 技术社区  · 16 年前

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

    8 回复  |  直到 16 年前
        1
  •  31
  •   Jon Skeet    16 年前

    这只是一种选择。您可以禁用它:

    再竖琴->选项->代码检查->检查严重性->代码冗余->尽可能使用'var'关键字:将其更改为“不显示”

    还有一个上下文(灯泡)选项,它将带您走向各个方向-这在ReSharper下->选项->语言->C#->上下文操作->“将显式类型声明替换为'var'”

        2
  •  21
  •   floatingmarbles    13 年前

    我看了哈迪·哈里里的一段视频,他在那里演示了Resharper 6.x。如果你是一个有意义的用户,那么你的名字就是一个更有意义的变量。

        3
  •  6
  •   David Thibault    16 年前

    默认情况下,它将“绿色扭曲”此类型的声明:

    Person p = new Person();
    ^^^^^^
    

    因为重复。

    当可以推断时,它还将建议(绿色小下划线)var:

    Person p = repository.GetPerson(1);
    ¯¯¯
    

    在这种情况下,可以根据GetPerson方法的返回类型来推断。

    正如Jon Skeet所说,您可以在resharper的选项中禁用这些建议。

        4
  •  5
  •   Kyle West    16 年前

    要回答你的问题。。。因为JetBrains的人认为这是“首选”方式。

        5
  •  3
  •   Ilya Chernomordik    12 年前

    以下是JetBrains代码检查wiki上的相关说明: http://confluence.jetbrains.net/display/ReSharper/Use+%27var%27+keyword+when+initializer+explicitly+declares+type

    如果你在右边看到这个类,那么也没有必要在左边看到它。如果类名很长,它还可以节省空间并减少代码。就我个人而言,我不会将var用于诸如string、int之类的简单类型,但会将其用于诸如 var dictionary = new Dictionary<string, int>() 为了节省空间。

        6
  •  1
  •   Paul Kapustin    16 年前

    例如,当类型对您来说是“隐式”的(当然,当Resharper建议它时,它对编译器来说总是隐式的)并且它的缺失不会降低代码的可读性时,最好对循环变量使用vars,例如,在迭代集合时,等等。 另外,我喜欢缩短一些声明,这些声明在泛型中可能会变得很长。 比如,如果在赋值的左侧写上“var”,那么IList(IDictionary(SomeType))myVar=List(IDictionary(SomeType))()不会有太大的松动。

    当然,我会尽量小心地使用vars,以提高可读性,反之亦然。

        7
  •  1
  •   Paul Kapustin    16 年前

    对我来说,这绝对是值得付出的代价…(即使我必须自己支付)。 但是它会减慢你的速度。 如果你有5000行代码这样的文件,它会变得非常慢。

        8
  •  0
  •   Jonas Kongslund    16 年前

    变量有助于使代码在方法内部更具可读性,特别是在使用泛型时。

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