Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Słowo kluczowe this
odnosi się do bieżącego wystąpienia klasy i jest również używane jako modyfikator pierwszego parametru metody rozszerzenia.
Uwaga
W tym artykule omówiono użycie this
w przypadku wystąpień klas. Aby uzyskać więcej informacji o jego użyciu w metodach rozszerzeń, zobacz słowo kluczowe extension
.
Poniżej przedstawiono typowe zastosowania this
:
Aby zakwalifikować członków ukrytych z powodu podobnych nazw, na przykład:
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; } }
Aby przekazać obiekt jako parametr do innych metod, na przykład:
CalcTax(this);
Aby na przykład zadeklarować indeksatory :
public int this[int param] { get => array[param]; set => array[param] = value; }
Statyczne funkcje składowe, ponieważ istnieją na poziomie klasy, a nie jako część obiektu, nie mają this
wskaźnika. Błędem jest odwoływanie się do this
w metodzie statycznej.
W tym przykładzie parametry name
i alias
ukrywają pola o tych samych nazwach. Słowo this
kluczowe kwalifikuje te zmienne jako Employee
składowe klasy. Słowo this
kluczowe określa również obiekt metody CalcTax
, która należy do innej klasy.
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
*/
Specyfikacja języka C#
Aby uzyskać więcej informacji, zapoznaj się ze specyfikacją języka C#
Zobacz też
- preferencje stylu kodu
this
(IDE0003 i IDE0009) - C# słowa kluczowe
- podstawowa
- Metody