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

在构造函数中:

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

在其他地方

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

当前回答

我一有机会就用。我相信这会使代码更有可读性,而更有可读性的代码就等于更少的bug和更强的可维护性。

其他回答

1 -常见的Java setter习语:

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

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

notifier.addListener(this);

“这。'帮助查找'this'类中有很多成员的成员(通常是由于深度继承链)。

按CTRL+空格键并没有帮助,因为它还包括类型;而这。’只包括会员。

一旦我得到我想要的东西,我通常会删除它:但这只是我风格的突破。

在风格方面,如果你是一个独行侠——你决定;如果你在一家公司工作,坚持公司的政策(看看源代码控制中的东西,看看其他人在做什么)。就用它来评定成员资格而言,既不正确也不错误。唯一错误的就是前后矛盾——这是风格的黄金法则。别挑剔别人。把时间花在思考真正的编码问题上——当然还有编码。

我不能相信所有的人都说使用它总是一个“最佳实践”之类的。

当存在歧义时使用“this”,如Corey的例子,或者当需要将对象作为参数传递时,如Ryan的例子。没有理由以其他方式使用它,因为能够基于作用域链解析变量应该足够清楚,因此不需要用它来限定变量。

编辑:关于“this”的c#文档指出了“this”关键字除了我提到的两种用途之外的另一种用途——用于声明索引器

编辑:@Juan:嗯,我在我的语句中没有看到任何不一致的地方-有3个实例,当我使用“this”关键字时(在c#文档中有记录),而这些时候你实际上需要它。在构造函数中,当没有阴影发生时,在变量前面加上“this”只是浪费我的击键和阅读它的时间,它没有任何好处。

下面是我使用它的时候:

从类内部访问私有方法(以区分) 将当前对象传递给另一个方法(或在发生事件时作为发送者对象) 创建扩展方法时:D

我没有对私有字段使用这个,因为我用下划线(_)作为私有字段变量名的前缀。

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