C# Language Keywords this

Help us to keep this website almost Ad Free! It takes only 10 seconds of your time:
> Step 1: Go view our video on YouTube: EF Core Bulk Insert
> Step 2: And Like the video. BONUS: You can also share it!

Example

The this keyword refers to the current instance of class(object). That way two variables with the same name, one at the class-level (a field) and one being a parameter (or local variable) of a method, can be distinguished.

public MyClass {
    int a;

    void set_a(int a)
    {
        //this.a refers to the variable defined outside of the method,
        //while a refers to the passed parameter.
        this.a = a;
    }
}

Other usages of the keyword are chaining non-static constructor overloads:

public MyClass(int arg) : this(arg, null)
{
}

and writing indexers:

public string this[int idx1, string idx2]
{
    get { /* ... */ }
    set { /* ... */ }
}

and declaring extension methods:

public static int Count<TItem>(this IEnumerable<TItem> source)
{
    // ...
}

If there is no conflict with a local variable or parameter, it is a matter of style whether to use this or not, so this.MemberOfType and MemberOfType would be equivalent in that case. Also see base keyword.

Note that if an extension method is to be called on the current instance, this is required. For example if your are inside a non-static method of a class which implements IEnumerable<> and you want to call the extension Count from before, you must use:

this.Count()  // works like StaticClassForExtensionMethod.Count(this)

and this cannot be omitted there.



Got any C# Language Question?