我应该默认使用`this`吗?

Bob*_*bby 1 c# coding-style

我们都知道这this是指一个类的实际实例......但在我看来,大多数人并没有使用它.那么,我应该使用它吗?

我对它的看法如下:由于this引用了类的实际实例,它应该用于访问该类的任何成员.

  public void(String newValue) {
        this.privateVariable = newValue;
  }
Run Code Online (Sandbox Code Playgroud)

这应该保证该值不会分配给范围内具有相同名称的对象(无论如何,这也可能最终成为未定义的行为).但是,如果使用下划线将私有字段与非私有字段分开,该怎么办:

  public voud(String newValue) {
        _privateVariable = newValue;
  }
Run Code Online (Sandbox Code Playgroud)

this 在这种情况下似乎有点多余和不必要.

那么,是否有充分的理由使用或不使用this?或者我只是绞尽脑汁想要什么?

Jon*_*eet 7

就个人而言,我只在必要时使用它,例如

public MyClass(string name)
{
    this.name = name;
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢从最自然的名称重命名参数或字段.我不会this在不需要的地方使用它.话虽如此,但绝对没有害处这样做-如果你觉得它使你的代码更清晰,这是一个很好的理由去使用它.

  • 出于某种原因,我从不写"这个"(除非我必须),但总是写"私人".我不喜欢看到任何没有访问修饰符的东西.也许我已经从Java中挑选了它...... (2认同)

Ars*_*nko 7

没有人提到如果要求是制作符合StyleCop的代码并且不违反可读性规则SA1101 ,则必须使用 this.根据文件,

只要代码包含对本地类的实例成员的调用或没有以"this"为前缀的基类,就会违反此规则.

此外,在我看来,this即使对于非StyleCop兼容的源代码,也必须鼓励使用关键字,因为指定会this增加可读性并降低本地(方法范围)和类(对象范围)变量之间混合的风险.

  • ......但我会说它*通过在无论如何没有混淆的情况下引入视觉混乱来降低*可读性.我通常发现很明显哪些变量与类的实例相关,哪些变量是本地的.当然,保持你的方法简短也有助于此. (3认同)