Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Ключевое this слово ссылается на текущий экземпляр класса. Он также служит модификатором для первого параметра метода расширения.
Примечание.
В этой статье описывается использование this экземпляра получателя в текущем элементе. Дополнительные сведения об использовании в методах расширения см. в ключевом слове extension .
Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.
Распространенные варианты this использования:
Квалифицируя элементы, скрытые аналогичными именами, например:
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; } }Передача объекта в качестве параметра другим методам.
CalcTax(this);Объявление индексаторов, таких как:
public int this[int param] { get => array[param]; set => array[param] = value; }
Статические функции-члены существуют на уровне класса, а не в составе объекта. У них нет указателя this . Ссылка на this статический метод является ошибкой.
В следующем примере параметры name и alias скрытие полей с одинаковыми именами. Ключевое this слово квалифифициирует эти переменные как Employee члены класса. Ключевое this слово также указывает объект для метода CalcTax, который принадлежит другому классу.
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#
Дополнительные сведения см. в спецификации языка C# . Спецификация языка является авторитетным источником синтаксиса и использования C#.