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 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 name
parametri 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#.