Proprietà implementate automaticamente
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 10 di 70.
Le proprietà implementate automaticamente ti consentono di dichiarare proprietà senza scrivere campi di supporto espliciti. Il compilatore crea automaticamente un campo privato nascosto dietro le quinte.
Invece di scrivere questo codice prolisso:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}Puoi semplicemente scrivere:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Puoi anche impostare i valori predefiniti direttamente nella dichiarazione:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Le proprietà implementate automaticamente sono ideali quando non hai bisogno di convalida o di una logica personalizzata nel getter o nel setter. Mantengono le tue classi pulite e riducono notevolmente il codice boilerplate.
Sfida
FacileCostruiamo un semplice sistema di inventario usando proprietà implementate automaticamente per tenere traccia degli articoli in un negozio.
Creerai due file per organizzare il codice:
Item.cs: Definisci una classeItemnello spazio dei nomiInventorycon proprietà implementate automaticamente perName(string),Price(decimal) eInStock(bool). Imposta i valori predefiniti:Namedovrebbe avere come valore predefinito"Unknown",Price0.0meInStocktrue.Program.cs: Nel file principale, crea due oggettiItemusando inizializzatori di oggetto. Leggi dall'input il nome e il prezzo di ciascun articolo, poi stampa i dettagli di ciascun articolo.
Riceverai quattro input:
- Nome del primo articolo
- Prezzo del primo articolo
- Nome del secondo articolo
- Prezzo del secondo articolo
Stampa ciascun articolo in questo formato:
Item: {Name}, Price: {Price}, In Stock: {InStock}Per esempio, se gli input sono Laptop, 999.99, Mouse e 25.50, l'output dovrebbe essere:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: TrueProvalo tu
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// Leggi i dati di input per il primo articolo
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// Leggi i dati di input per il secondo articolo
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: Crea due oggetti Item usando gli inizializzatori di oggetto
// Imposta le proprietà Name e Price usando i valori di input
// TODO: Stampa i dettagli di ogni articolo nel formato:
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
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