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 5x5La 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.
Sfida
MedioCompleta 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());
}
}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
1Fondamenti della programmazione orientata agli oggetti
File esterniNamespace e direttiveIntroduzione a classi e oggettiLa parola chiave "this"Metodi e parametriCampi e proprietàCostruttoriInizializzatori di oggettiRiepilogo - Calcolatrice semplice4Ereditarietà
Sintassi di base dell'ereditarietà (:)La parola chiave 'base'Parole chiave virtual e overrideClassi sealedLa classe base 'object'Riepilogo - Gerarchia dei dipendenti7Funzionalità avanzate
Sovraccarico degli operatoriIndicizzatori (this[])Override di ToString()Metodi di estensioneRiepilogo - Lista personalizzata10Pattern di progettazione Parte 1
Introduzione ai pattern di progettazioneSingleton thread-safePattern FactoryPattern Observer (eventi)Pattern Strategy2Proprietà e membri statici
Proprietà implementate automaticamenteProprietà di sola lettura e di sola scritturaCampi e metodi staticiClassi staticheMembri con corpo di espressione5Polimorfismo e interfacce
Polimorfismo a compile time e runtimeInterfaccia o classe astrattaInterfacce multipleInterfacce espliciteUpcasting e downcastingRipasso: calcolatore di forme8Concetti avanzati di programmazione a oggetti
Composizione invece dell'ereditarietàTipi generici (classi e metodi)Delegati ed eventiAttributi e reflectionIDisposable e istruzione usingNozioni di base sull'iniezione delle dipendenze11Pattern di progettazione, parte 2
Pattern del ComandoPattern dell’AdattatorePattern del DecoratorePattern Template MethodPattern dello StatoPattern Composito3Architettura delle classi
Dati di istanza vs staticiParole chiave 'readonly' e 'const'Campi di supportoRiepilogo - Gestore di conti bancari6Incapsulamento
Modificatori di accessoProprietà per l'incapsulamentoImplementazione dell'occultamento dei datiModelli di immutabilitàRiepilogo - Registri degli studentiEsercitati da solo: Compilatore C# online