Compartir a través de


La palabra clave this

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

Nota:

En este artículo se describe el uso de this con instancias de clase. Para obtener más información sobre su uso en métodos de extensión, vea la extension palabra clave .

A continuación se muestran los usos comunes de this:

  • Para calificar a miembros ocultos por nombres similares, por ejemplo:

    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 pasar un objeto como parámetro a otros métodos, por ejemplo:

    CalcTax(this);
    
  • Para declarar indizadores, por ejemplo:

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

Las funciones miembro estáticas, porque existen en el nivel de clase y no como parte de un objeto, no tienen un this puntero. Es un error referirse a this en un método estático.

En este ejemplo, los parámetros namey 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