在私人班级成员中正确使用关键词“this”是什么?

时间:2009-01-26 10:19:01

标签: c# .net

何时应在C#类定义中使用关键字“this”?

在课堂上使用“this.Method()”形式是否标准?或者只使用“Method()”?我已经看过了两个,并且通常选择第二个选项,但我想了解更多有关此主题的信息。

4 个答案:

答案 0 :(得分:15)

大部分时间都是多余的,可以省略;一些例外:

  • 调用链式构造函数:Foo() : this("bar") {}
  • 消除本地参数/变量与字段之间的歧义:this.foo = foo;
  • 在当前实例上调用扩展方法:this.SomeMethod();(定义为public static SomeMethod(this Foo foo) {...}
  • 将对当前实例的引用传递给外部方法:Helper.DoSomething(this);

答案 1 :(得分:4)

这个主要用于在名称不明确时显式使用类成员,如下例所示:

public class FooBar
{
    private string Foo;
    private string Bar;

    public void DoWhatever(string Foo, string Bar)
    {
        // use *this* to indicate your class members
        this.Foo = Foo;
        this.Bar = Bar;
    }

    public void DoSomethingElse()
    {
        // Not ambiguity, no need to use *this* to indicate class members
        Debug.WriteLine(Foo + Bar);
    }
}

除此之外,有些人更喜欢对内部方法调用(`this.Method()')进行前缀,因为它更明显地表明你没有调用任何外部方法,但我发现它并不重要。

它对所得到的程序的效率肯定没有影响。

答案 2 :(得分:2)

当它变得与你所引用的相关时,我使用'this',它有一个与类变量/方法具有相同/相似名称的局部变量。

但它真的是个人偏好的东西,只要用你认为最好的东西。

答案 3 :(得分:1)

总是......只是我的2美分