Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 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#.