Comparteix via


La palabra clave this

La this palabra clave hace referencia a la instancia actual de la clase . También sirve como modificador para el primer parámetro de un método de extensión.

Nota:

En este artículo se describe el uso de this para hacer referencia a la instancia del receptor en el miembro actual. Para obtener más información sobre su uso en métodos de extensión, vea la extension palabra clave .

La documentación de referencia del lenguaje C# cubre la versión más reciente publicada del lenguaje C#. También contiene documentación inicial sobre las características de las versiones preliminares públicas de la próxima versión del lenguaje.

La documentación identifica cualquier característica introducida por primera vez en las últimas tres versiones del idioma o en las versiones preliminares públicas actuales.

Sugerencia

Para buscar cuándo se introdujo por primera vez una característica en C#, consulte el artículo sobre el historial de versiones del lenguaje C#.

Entre los usos comunes de this se incluyen:

  • Calificar miembros ocultos por nombres similares, como:

    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;
        }
    }
    
  • Pasar un objeto como parámetro a otros métodos.

    CalcTax(this);
    
  • Declarar indizadores, como:

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

Las funciones miembro estáticas existen en el nivel de clase y no como parte de un objeto . No tienen un this puntero. Hacer referencia a this en un método estático es un error.

En el ejemplo siguiente, los parámetros name y alias ocultan campos con los mismos nombres. La this palabra clave califica esas variables como Employee miembros de clase. La this palabra clave también especifica el objeto para el método CalcTax, que pertenece a otra clase.

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

Especificación del lenguaje C#

Para obtener más información, consulte especificación del lenguaje C#. La especificación del lenguaje es el origen definitivo de la sintaxis y el uso de C#.

Consulte también