this (odwołanie w C#)this (C# Reference)

this Słowo kluczowe odwołuje się do bieżącego wystąpienia klasy i jest również używane jako modyfikator pierwszego parametru metody rozszerzenia.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.

Uwaga

W tym artykule omówiono użycie this z wystąpieniami klas.This article discusses the use of this with class instances. Aby uzyskać więcej informacji o używaniu metod rozszerzających, zobacz metody rozszerzenia.For more information about its use in extension methods, see Extension Methods.

Poniżej przedstawiono typowe zastosowania this:The following are common uses of this:

  • Aby zakwalifikować członków ukrytych przy użyciu podobnych nazw, na przykład: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;
        }
    }
    
  • Aby przekazać obiekt jako parametr do innych metod, na przykład:To pass an object as a parameter to other methods, for example:

    CalcTax(this);
    
  • Aby zadeklarować indeksatory, na przykład:To declare indexers, for example:

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

Statyczne funkcje członkowskie, ponieważ istnieją na poziomie klasy, a nie jako część obiektu, nie mają this wskaźnika.Static member functions, because they exist at the class level and not as part of an object, do not have a this pointer. Wystąpił błąd podczas odwoływania się this do w metodzie statycznej.It is an error to refer to this in a static method.

PrzykładExample

W tym przykładzie this jest używany do Employee kwalifikowania elementów członkowskich name klasy i alias, które są ukryte przez podobne nazwy.In this example, this is used to qualify the Employee class members, name and alias, which are hidden by similar names. Jest on również używany do przekazywania obiektu do metody CalcTax, która należy do innej klasy.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
 */

specyfikacja języka C#C# language specification

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#.For more information, see the C# Language Specification. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.The language specification is the definitive source for C# syntax and usage.

Zobacz takżeSee also