this (Referencia de C#)

Actualización: noviembre 2007

La palabra clave this hace referencia a la instancia actual de la clase y también se utiliza como modificador del primer parámetro de un método de extensión.

Nota:

En este artículo se analiza el uso de this con instancias de clase. Para obtener más información sobre su uso en métodos de extensión, vea Métodos de extensión (Guía de programación de C#).

A continuación, se indican algunos usos comunes de this:

  • Obtener acceso a miembros con el fin de evitar ambigüedades con nombres similares, por ejemplo:
public Employee(string name, string alias)
{
    // Use this to qualify the fields, name and alias:
    this.name = name;
    this.alias = alias;
}
  • Pasar un objeto como parámetro a otros métodos, por ejemplo, para:

    CalcTax(this);
    
  • Declarar indizadores, por ejemplo:

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

Debido a que las funciones miembro estáticas existen en el nivel de clase y no como parte de un objeto, no tienen un puntero this. Es un error hacer referencia a this en un método estático.

Ejemplo

En este ejemplo, this se utiliza para calificar los miembros de la clase Employee, name y alias, que presentan ambigüedad con nombres similares. También se utiliza para pasar un objeto al método CalcTax, el cual pertenece a otra clase.

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

Especificación del lenguaje C#

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 7.5.7 Acceso a this

  • 10.3.8.4 Acceso a this

Vea también

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

base (Referencia de C#)

Métodos (Guía de programación de C#)

Otros recursos

Referencia de C#