this (Referência de C#)this (C# Reference)

A palavra-chave this refere-se à instância atual da classe e também é usada como um modificador do primeiro parâmetro de um método de extensão.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.

Observação

Este artigo discute o uso de this com instâncias de classe.This article discusses the use of this with class instances. Para obter mais informações sobre seu uso em métodos de extensão, consulte Métodos de extensão.For more information about its use in extension methods, see Extension Methods.

Veja a seguir usos comuns de this:The following are common uses of this:

  • Para qualificar membros ocultados por nomes semelhantes, por exemplo: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;
        }
    }
    
  • Para passar um objeto como parâmetro para outros métodos, por exemplo:To pass an object as a parameter to other methods, for example:

    CalcTax(this);
    
  • Para declarar indexadores, por exemplo:To declare indexers, for example:

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

Funções de membro estático, por existirem no nível da classe e não como parte de um objeto, não têm um ponteiro this.Static member functions, because they exist at the class level and not as part of an object, do not have a this pointer. É um erro se referir a this em um método estático.It is an error to refer to this in a static method.

ExemploExample

Neste exemplo, this é usado para qualificar os membros de classe Employee, name e alias, que são ocultados por nomes semelhantes.In this example, this is used to qualify the Employee class members, name and alias, which are hidden by similar names. Ele também é usado para passar um objeto para o método CalcTax, que pertence a outra classe.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
 */

Especificação da linguagem C#C# language specification

Para obter mais informações, consulte a Especificação da linguagem C#.For more information, see the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Consulte tambémSee also