Condividi tramite


Parola chiave this

La parola chiave this fa riferimento all'istanza corrente della classe e viene usata anche come modificatore del primo parametro di un metodo di estensione.

Nota

Questo articolo illustra l'uso di this con le istanze di classe. Per altre informazioni sull'uso nei metodi di estensione, vedere extension parola chiave.

Di seguito sono riportati gli usi comuni di this:

  • Per qualificare i membri nascosti da nomi simili, ad esempio:

    public class Employee
    {
        private string alias;
        private string name;
    
        public Employee(string name, string alias)
        {
            // Use this to qualify the members of the class
            // instead of the constructor parameters.
            this.name = name;
            this.alias = alias;
        }
    }
    
  • Per passare un oggetto come parametro ad altri metodi, ad esempio:

    CalcTax(this);
    
  • Ad esempio, per dichiarare indicizzatori:

    public int this[int param]
    {
        get => array[param];
        set => array[param] = value;
    }
    

Le funzioni membro statiche, perché esistono a livello di classe e non come parte di un oggetto, non hanno un this puntatore. È un errore fare riferimento a this in un metodo statico.

In questo esempio, i nameparametri e alias nascondono i campi con gli stessi nomi. La this parola chiave qualifica tali variabili come Employee membri della classe. La this parola chiave specifica anche l'oggetto per il metodo CalcTax, che appartiene a un'altra classe.

class Employee
{
    private string name;
    private string alias;

    // Constructor:
    public Employee(string name, string alias)
    {
        // Use this to qualify the fields, name and alias:
        this.name = name;
        this.alias = alias;
    }

    // Printing method:
    public void printEmployee()
    {
        Console.WriteLine($"""
        Name: {name}
        Alias: {alias}
        """);
        // Passing the object to the CalcTax method by using this:
        Console.WriteLine($"Taxes: {Tax.CalcTax(this):C}");
    }

    public decimal Salary { get; } = 3000.00m;
}

class Tax
{
    public static decimal CalcTax(Employee E)=> 0.08m * E.Salary;
}

class Program
{
    static void Main()
    {
        // Create objects:
        Employee E1 = new Employee("Mingda Pan", "mpan");

        // Display results:
        E1.printEmployee();
    }
}
/*
Output:
    Name: Mingda Pan
    Alias: mpan
    Taxes: $240.00
 */

Specifiche del linguaggio C#

Per ulteriori informazioni, consulta le Specifiche del linguaggio C# . La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.

Vedere anche