【问题标题】:What is the proper use of keyword 'this' in private class members? [duplicate]在私有类成员中正确使用关键字“this”是什么? [复制]
【发布时间】:2009-01-26 10:19:00
【问题描述】:

什么时候应该在 C# 类定义中使用关键字“this”?

在类中使用“this.Method()”形式是标准的吗?还是只使用“Method()”?两者我都看过,通常会选择第二个,但我想了解更多关于这个主题的信息。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    大部分时候是多余的,可以省略;少数例外:

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

    【讨论】:

      【解决方案2】:

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

      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()´),因为这样可以更明显地表明您没有调用任何外部方法,但我认为这并不重要。

      它绝对不会影响生成的程序或多或少的效率。

      【讨论】:

        【解决方案3】:

        当你所指的内容变得模棱两可时,我会使用“this”,它有一个与类变量/方法具有相同/相似名称的局部变量。

        但这真的是个人喜好的事情,就用你觉得最好的吧。

        【讨论】:

        • 95% 的时间我都倾向于不使用“this”。但后来我开始怀疑我是否遗漏了什么。我总是可以确保在这里澄清一些事情。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-05
          • 1970-01-01
          • 1970-01-01
          • 2011-01-21
          • 1970-01-01
          • 1970-01-01
          • 2020-01-08
          • 2017-04-02
          相关资源
          最近更新 更多