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

在构造函数中:

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

在其他地方

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

当前回答

你应该经常使用它,我用它来区分私有字段和参数(因为我们的命名约定声明我们不为成员和参数名使用前缀(并且它们是基于在互联网上找到的信息,所以我认为这是一个最佳实践))

其他回答

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

下面是我使用它的时候:

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

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

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

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

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

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

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

黑C + +铝

我同意“非用不可”的说法。不必要地用它修饰代码并不是一个好主意,因为当你忘记这样做时,编译器不会警告你。这可能会给那些期待它一直在那里的人带来困惑,也就是说,他们必须考虑它。

那么,你什么时候会使用它呢?我只是看了一些随机的代码,并找到了这些例子(我不判断这些是好事还是坏事):

将“yourself”传递给一个函数。 将“你自己”分配给一个指针或类似的东西。 铸造,即上/下铸造(安全或其他),铸造constness等。 编译器强制消歧。