Menu
Coddy logo textTech

A Palavra-chave 'this'

Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 4 de 70.

A palavra-chave this refere-se à instância atual de uma classe. Ela é usada para acessar membros da instância e distinguir entre parâmetros e campos com o mesmo nome.

Use this para distinguir entre campos e parâmetros

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

Sem o this, o parâmetro sombrearia o campo

// Isso não funcionará como esperado
public Person(string name, int age)
{
    name = name;  // Atribui o parâmetro a si mesmo!
    age = age;    // Atribui o parâmetro a si mesmo!
}

Use this com propriedades

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 chamar outro construtor na mesma classe

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;
    }
    
    // Construtor para quadrados
    public Rectangle(int size) : this(size, size)
    {
    }
}

Exemplo de uso:

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

A palavra-chave this sempre se refere à instância do objeto atual. É especialmente útil quando os nomes dos parâmetros coincidem com os nomes dos campos ou propriedades, tornando seu código mais claro e prevenindo erros.

challenge icon

Desafio

Médio

Complete a classe Product adicionando um construtor que usa a palavra-chave this para atribuir valores de parâmetros às propriedades. Também implemente o método GetDescription() usando this para acessar as propriedades.

O método GetDescription() deve retornar: "{Name} costs ${Price}"

Folha de consulta

A palavra-chave this refere-se à instância atual de uma classe e é usada para acessar membros da instância.

Use this para distinguir entre campos e parâmetros com o mesmo nome:

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

Sem o this, o parâmetro sombreia o campo e atribui o valor a si mesmo:

// Isso não funcionará como esperado
public Person(string name, int age)
{
    name = name;  // Atribui o parâmetro a si mesmo!
    age = age;    // Atribui o parâmetro a si mesmo!
}

Use this com propriedades:

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 chamar outro construtor na mesma classe (encadeamento de construtores):

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;
    }
    
    // Construtor para quadrados
    public Rectangle(int size) : this(size, size)
    {
    }
}

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

Experimente você mesmo

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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos