Menu
Coddy logo textTech

La parola chiave "this"

Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 4 di 70.

La parola chiave this si riferisce all’istanza corrente di una classe. Si usa per accedere ai membri dell’istanza e distinguere tra parametri e campi con lo stesso nome.

Usa this per distinguere tra campi e parametri

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

Senza this, il parametro nasconderebbe il campo

// Questo non funzionerà come previsto
public Person(string name, int age)
{
    name = name;  // Assegna il parametro a sé stesso!
    age = age;    // Assegna il parametro a sé stesso!
}

Usa this con le proprietà

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 per chiamare un altro costruttore nella stessa 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;
    }
    
    // Costruttore per i quadrati
    public Rectangle(int size) : this(size, size)
    {
    }
}

Esempio di utilizzo:

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

La parola chiave this fa sempre riferimento all’istanza dell’oggetto corrente. È particolarmente utile quando i nomi dei parametri corrispondono ai nomi dei campi o delle proprietà, rendendo il codice più chiaro e prevenendo gli errori.

challenge icon

Sfida

Medio

Completa la classe Product aggiungendo un costruttore che utilizzi la parola chiave this per assegnare i valori dei parametri alle proprietà. Implementa anche il metodo GetDescription() usando this per accedere alle proprietà.

Il metodo GetDescription() dovrebbe restituire: "{Name} costs ${Price}"

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C# online