this (Справочник по C#)this (C# Reference)

Ключевое слово this ссылается на текущий экземпляр класса, а также используется в качестве модификатора первого параметра метода расширения.The this keyword refers to the current instance of the class and is also used as a modifier of the first parameter of an extension method.

Примечание

В этой статье рассматривается использование this с экземплярами класса.This article discusses the use of this with class instances. Дополнительные сведения об использовании этого ключевого слова в методах расширения см. в разделе Методы расширения.For more information about its use in extension methods, see Extension Methods.

Ниже перечислены наиболее частые способы использования this.The following are common uses of this:

  • Для квалификации элементов, скрытых одинаковыми именами, например:To qualify members hidden by similar names, for example:

    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;
        }
    }
    
  • Для передачи другим методам объекта в качестве параметра, например:To pass an object as a parameter to other methods, for example:

    CalcTax(this);
    
  • Для объявления индексаторов, например:To declare indexers, for example:

    public int this[int param]
    {
        get { return array[param]; }
        set { array[param] = value; }
    }
    

У статических функций-членов нет указателя this, так как они существуют только на уровне класса и не являются частями объектов.Static member functions, because they exist at the class level and not as part of an object, do not have a this pointer. Использование ссылки на this в статическом методе является недопустимым.It is an error to refer to this in a static method.

ПримерExample

В этом примере this используется для квалификации членов класса Employee, name и alias, которые скрыты одинаковыми именами.In this example, this is used to qualify the Employee class members, name and alias, which are hidden by similar names. Это ключевое слово также используется для передачи объекта в метод CalcTax, который принадлежит другому классу.It is also used to pass an object to the method CalcTax, which belongs to another class.

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
 */

Спецификация языка C#C# language specification

Дополнительные сведения см. в спецификации языка C#.For more information, see the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.

См. такжеSee also