-3

since many years i'm trying to figure out that what does 'this' do in c#.net

e.g.

private string personName;

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

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

}

Hunain
  • 99
  • 1
  • 3
  • 13

3 Answers3

2

The this keyword allows you to explicitly refer to a member of the current instance.

In your case, you can just as easily leave it off - the rules in C# will find the member variable.

However, if you use a parameter with the same name as a member variable, or have a local with the same name, using this specifies which variable to use. This allows you to do:

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;
}

Tools like StyleCop enforce the use of this everywhere, since it completely removes any ambiguity - you're explicitly saying you want to set a member (or call a function, etc) within the current instance.

Reed Copsey
  • 554,122
  • 78
  • 1,158
  • 1,373
2

this refers to the object that the method belongs to. It can be used - like demonstrated in the other answers - for scope choosing. It can also be used when you want to use the current object as an entire object(that is - not a specific field, but the object as a whole) - for example:

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);
    }
}
Idan Arye
  • 12,402
  • 5
  • 49
  • 68
0

this refer to the instance of the class. Usually you don't use it as it becomes noise,but in some case it's important to use it.

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;
    }
}
Alexandre Rondeau
  • 2,667
  • 24
  • 31