Menu
Coddy logo textTech

La palabra clave 'this'

Parte de la sección Programación Orientada a Objetos del Journey de C# de Coddy — lección 4 de 70.

La palabra clave this se refiere a la instancia actual de una clase. Se utiliza para acceder a los miembros de la instancia y distinguir entre parámetros y campos con el mismo nombre.

Utiliza this para distinguir entre campos y parámetros

public class Person
{
    private string name;
    private int age;
    
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

Sin this, el parámetro ocultaría el campo

// Esto no funcionará como se espera
public Person(string name, int age)
{
    name = name;  // ¡Asigna el parámetro a sí mismo!
    age = age;    // ¡Asigna el parámetro a sí mismo!
}

Usa this con propiedades

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    
    public Product(string name, decimal price)
    {
        this.Name = name;
        this.Price = price;
    }
    
    public void DisplayInfo()
    {
        Console.WriteLine($"{this.Name}: ${this.Price}");
    }
}

Usa this para llamar a otro constructor en la misma clase

public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }
    
    public Rectangle(int width, int height)
    {
        this.Width = width;
        this.Height = height;
    }
    
    // Constructor para cuadrados
    public Rectangle(int size) : this(size, size)
    {
    }
}

Ejemplo de uso:

Rectangle rect = new Rectangle(5, 10);
Rectangle square = new Rectangle(5);  // Crea 5x5

La palabra clave this siempre se refiere a la instancia del objeto actual. Es especialmente útil cuando los nombres de los parámetros coinciden con los nombres de los campos o propiedades, lo que hace que su código sea más claro y evita errores.

challenge icon

Desafío

Intermedio

Completa la clase Product añadiendo un constructor que utilice la palabra clave this para asignar valores de parámetros a las propiedades. También implementa el método GetDescription() utilizando this para acceder a las propiedades.

El método GetDescription() debe devolver: "{Name} costs ${Price}"

Hoja de referencia

La palabra clave this se refiere a la instancia actual de una clase y se utiliza para acceder a los miembros de la instancia.

Use this para distinguir entre campos y parámetros con el mismo nombre:

public class Person
{
    private string name;
    private int age;
    
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

Sin this, el parámetro oculta el campo y se asigna a sí mismo:

// Esto no funcionará como se espera
public Person(string name, int age)
{
    name = name;  // ¡Asigna el parámetro a sí mismo!
    age = age;    // ¡Asigna el parámetro a sí mismo!
}

Use this con propiedades:

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    
    public Product(string name, decimal price)
    {
        this.Name = name;
        this.Price = price;
    }
    
    public void DisplayInfo()
    {
        Console.WriteLine($"{this.Name}: ${this.Price}");
    }
}

Use this para llamar a otro constructor en la misma clase (encadenamiento de constructores):

public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }
    
    public Rectangle(int width, int height)
    {
        this.Width = width;
        this.Height = height;
    }
    
    // Constructor para cuadrados
    public Rectangle(int size) : this(size, size)
    {
    }
}

Rectangle square = new Rectangle(5);  // Crea 5x5

Pruébalo tú mismo

using System;

class Program
{
    static void Main()
    {
        string name = Console.ReadLine();
        decimal price = decimal.Parse(Console.ReadLine());
        
        Product product = new Product(name, price);
        
        Console.WriteLine($"Product: {product.Name}");
        Console.WriteLine($"Price: ${product.Price}");
        Console.WriteLine(product.GetDescription());
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos