this (Riferimenti per C#)
La parola chiave this si riferisce all'istanza corrente della classe e viene anche utilizzata come modificatore del primo parametro di un metodo di estensione.
Nota
In questo articolo viene illustrato l'utilizzo della parola chiave this con le istanze della classe. Per ulteriori informazioni sull'utilizzo nei metodi di estensione, vedere Metodi di estensione (Guida per programmatori C#).
La parola chiave this viene generalmente utilizzata per le operazioni descritte di seguito.
- Qualificare i membri nascosti da nomi simili, ad esempio:
public Employee(string name, string alias)
{
// Use this to qualify the fields, name and alias:
this.name = name;
this.alias = alias;
}
Passare un oggetto come parametro ad altri metodi, ad esempio:
CalcTax(this);
Dichiarare indicizzatori, ad esempio:
public int this[int param]
{
get { return array[param]; }
set { array[param] = value; }
}
Dal momento che esistono solo a livello di classe e non come parte di un oggetto, le funzioni membro statiche non dispongono di un puntatore this. Non è possibile fare riferimento a this in un membro statico.
Esempio
Nell'esempio riportato di seguito la parola chiave this viene utilizzata per qualificare i membri di classe Employee, name e alias, che sono nascosti da nomi simili. La parola chiave viene inoltre utilizzata per passare un oggetto al metodo CalcTax, che appartiene a un'altra classe.
class Employee
{
private string name;
private string alias;
private decimal salary = 3000.00m;
// 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: {0}\nAlias: {1}", name, alias);
// Passing the object to the CalcTax method by using this:
Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this));
}
public decimal Salary
{
get { return salary; }
}
}
class Tax
{
public static decimal CalcTax(Employee E)
{
return 0.08m * E.Salary;
}
}
class MainClass
{
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, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.
Vedere anche
Riferimenti
Metodi (Guida per programmatori C#)