【问题标题】:What is the exact purpose of the 'This' keyword [duplicate]'This'关键字的确切目的是什么[重复]
【发布时间】:2018-05-28 01:50:37
【问题描述】:

所以几天前我在 Udemy 上开始了我的 C# 中级课程,讲师正在谈论“This”关键字。我知道它用于在类中而不是在函数中引用变量等,但我觉得你仍然可以没有它。让我给你举个例子:

public Customer(int id, string name) 
    : this(id) 
{
    this.Name = name;
}

我觉得 'this.Name' 部分绝对没有必要,因为我可以输入 'Name = name'会有相似的名字,只是为了确保你引用了正确的变量,这样你就不会不小心输入'name = Name'或类似的东西,我确信必须对 'this' 关键字有更大的意义。

【问题讨论】:

  • 那不就是调用构造函数只用id作为参数吗?

标签: c# this


【解决方案1】:

我同意你在上面的例子中,this.Name = name 是没有意义的,事实上大多数编译器都会给你一个警告,说明它没有必要。

重点不是你可以有相似的名字,而是你可以有完全相同相同的名字:

private string name;
public Customer(int id, string name) : this(id) {
        this.name = name;
}

name 的拼写方式与类字段和局部变量的拼写方式完全相同是有效的语法。默认情况下会引用局部变量,因此当存在具有 exact 同名的局部变量时,this 存在引用类变量。因为否则就没有其他方法可以引用它们。

【讨论】:

    【解决方案2】:

    使用this 关键字的主要原因是除了引用其字段外,还可以引用实例本身。以visitor 模式为例:

    interface Visitor {
        void Visit(Target target);
    }
    class Target {
        void Accept(Visitor visitor) {
            visitor.Visit(this); // not just a field but a whole instance
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      相关资源
      最近更新 更多