在私人班级成员中,关键字'this'的正确用法是什么?

问题描述:

何时应该在C#类定义中使用关键字'this'?在私人班级成员中,关键字'this'的正确用法是什么?

从类内使用“this.Method()”形式是否标准?或者只使用“Method()”?我已经看到了这两个,通常与第二选择,但我想了解更多关于这个问题。

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

  • 调用链构造:Foo() : this("bar") {}
  • 到本地参数/变量和场间的歧义:this.foo = foo;
  • 调用一个扩展方法对当前实例:this.SomeMethod(); (其中定义为public static SomeMethod(this Foo foo) {...}
  • 将当前实例的引用传递给外部方法:Helper.DoSomething(this);

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

我使用'this'当它变得模糊不清你所指的是什么,它有一个局部变量与类变量/方法具有相同/相似的名称。

但它确实是一个个人喜好的事情,只是使用你觉得是最好的。

+0

我95%的时间都倾向于不使用“这个”。但后来我开始怀疑我是否错过了一些东西。我总是可以肯定在SO上澄清这些事情。 – 2009-01-26 10:27:15

主要用于明确地使用类成员时单独名称将是模糊的,因为在这个例子中:

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()'),因为它更明显地表明你没有调用任何外部方法,但我不觉得它很重要。

它对所得到的程序效率或多或少没有影响。