这个运算符在C#.net,用法和好处?

时间:2013-10-30 23:53:19

标签: c#-4.0 this

多年以来我一直试图弄清楚c#.net

中的'这个'是做什么的

e.g。

private string personName;

public Person(string name)
{
  this.personName = name;
}

public override string ToString()
{
  return this.personName;
}

}

3 个答案:

答案 0 :(得分:2)

this关键字允许您显式引用当前实例的成员。

在您的情况下,您可以轻松地将其关闭 - C#中的规则将找到成员变量。

但是,如果您使用与成员变量同名的参数,或者具有相同名称的本地参数,则使用this指定要使用的变量。这允许你这样做:

private string personName;

public Person(string personName)
{
  // this finds the member
                    // refers to the argument, since it's in a more local scope
  this.personName = personName;
}

StyleCop这样的工具强制在任何地方使用this,因为它完全消除了任何歧义 - 你明确表示要在当前设置成员(或调用函数等)实例

答案 1 :(得分:2)

this指的是该方法所属的对象。它可以用于 - 如在其他答案中所示 - 用于范围选择。当您想要将当前对象用作整个对象(即 - 不是特定字段,而是整个对象)时,也可以使用它 - 例如:

public class Person{
    private string name;
    private Person parent;

    public Person(string name,Person parent=null;){
        this.name = name;
        this.parent = parent;
    }

    public Person createChild(string name){
        return new Person(name,this);
    }
}

答案 2 :(得分:0)

this指的是该类的实例。通常你不会使用它,因为它会变成噪音,但在某些情况下使用它很重要。

public class Foo
{
    private string bar;
    public Foo(string bar)
    {
        //this.bar refer to the private member bar and you assign the parameter bar to it
        this.bar = bar;  

        //Without the this, the bar variable in the inner scope bar, as in the parameter.¸
        //in this case you are assigning the bar variable to itself
        bar = bar;
    }
}