我很好奇其他人是如何使用这个关键字的。我倾向于在构造函数中使用它,但我也可能在整个类的其他方法中使用它。一些例子:

在构造函数中:

public Light(Vector v)
{
    this.dir = new Vector(v);
}

在其他地方

public void SomeMethod()
{
    Vector vec = new Vector();
    double d = (vec * vec) - (this.radius * this.radius);
}

当前回答

1 -常见的Java setter习语:

 public void setFoo(int foo) {
     this.foo = foo;
 }

2 -当调用以该对象作为参数的函数时

notifier.addListener(this);

其他回答

每当我引用一个实例变量时,我都会使用它,即使我不需要。我认为这让代码更清晰。

我在任何可能有歧义的地方都使用它(显然)。不只是编译器的模糊性(在这种情况下是必需的),还有查看代码的人的模糊性。

这取决于我所遵循的编码标准。如果我们用_来表示一个实例变量,那么“this”就多余了。如果我们不使用_,那么我倾向于使用这个来表示实例变量。

黑C + +铝

它被用在赋值操作符中,大多数时候你必须检查和防止奇怪的(无意的,危险的,或只是浪费程序时间的)事情,比如:

A a;
a = a;

你的赋值操作符将被写成:

A& A::operator=(const A& a) {
    if (this == &a) return *this;

    // we know both sides of the = operator are different, do something...

    return *this;
}

从来没有。永远。如果你有变量阴影,你的命名约定就会崩溃。我的意思是,成员变量没有区别的命名吗?Facepalm指