C# Language Questo

Esempio

Il this parola chiave si riferisce all'istanza corrente di classe (oggetto). In questo modo si possono distinguere due variabili con lo stesso nome, una a livello di classe (un campo) e una essendo un parametro (o una variabile locale) di un metodo.

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

Altri usi della parola chiave sono concatenamento di sovraccarichi di costruttori non statici :

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

e scrivere gli indicizzatori :

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

e dichiarando i metodi di estensione :

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

Se non v'è alcun conflitto con una variabile locale o un parametro, si tratta di una questione di stile se utilizzare this o no, così this.MemberOfType e MemberOfType sarebbero equivalenti in quel caso. Vedi anche la parola chiave di base .

Si noti che se un metodo di estensione deve essere chiamato in questa istanza, this è richiesto. Ad esempio se ci si trova all'interno di un metodo non statico di una classe che implementa IEnumerable<> e si desidera chiamare il Count dell'estensione di prima, è necessario utilizzare:

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

e this non può essere omesso lì.