Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A this
kulcsszó az osztály aktuális példányára hivatkozik, és a bővítménymetódus első paraméterének módosítójaként is használatos.
Megjegyzés
Ez a cikk a this
osztálypéldányokkal való használatát ismerteti. A bővítménymetelyekben való használatával kapcsolatos további információkért tekintse meg a kulcsszót extension
.
A this
gyakori felhasználási módjai a következők:
A hasonló nevek által rejtett tagok minősítése, például:
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; } }
Objektum paraméterként való átadása más metódusoknak, például:
CalcTax(this);
indexelők deklarálásához, például:
public int this[int param] { get => array[param]; set => array[param] = value; }
A statikus tagfüggvények, mivel az osztály szintjén léteznek, és nem egy objektum részeként, nincs this
mutatójuk. Ez egy statikus metódusban való hivatkozási this
hiba.
Ebben a példában a paraméterek name
alias
és az azonos nevű mezők elrejtése. A this
kulcsszó osztálytagként Employee
minősíti ezeket a változókat. A this
kulcsszó a metódus CalcTax
objektumát is megadja, amely egy másik osztályhoz tartozik.
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
*/
C# nyelvspecifikáció
További információ: C# nyelvi specifikáció. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.