Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La this parola chiave fa riferimento all'istanza corrente della classe . Funge anche da modificatore per il primo parametro di un metodo di estensione.
Nota
Questo articolo illustra l'uso di this per fare riferimento all'istanza del ricevitore nel membro corrente. Per altre informazioni sull'uso nei metodi di estensione, vedere extension parola chiave.
Il riferimento al linguaggio C# documenta la versione rilasciata più di recente del linguaggio C#. Contiene anche la documentazione iniziale per le funzionalità nelle versioni di anteprima pubblica per la prossima versione del linguaggio di programmazione.
La documentazione identifica tutte le funzionalità introdotte nelle ultime tre versioni della lingua o nelle anteprime pubbliche correnti.
Suggerimento
Per trovare quando una funzionalità è stata introdotta per la prima volta in C#, vedere l'articolo sulla cronologia delle versioni del linguaggio C#.
Gli usi comuni di this includono:
Membri idonei 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; } }Passaggio di un oggetto come parametro ad altri metodi.
CalcTax(this);Dichiarazione di indicizzatori, ad esempio:
public int this[int param] { get => array[param]; set => array[param] = value; }
Le funzioni membro statiche esistono a livello di classe e non come parte di un oggetto . Non hanno un this puntatore. Fare riferimento a this in un metodo statico è un errore.
Nell'esempio seguente i name parametri e alias i campi vengono nascosti 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#.