Campi e proprietà
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 6 di 70.
I campi sono variabili dichiarate direttamente in una classe. Le proprietà sono membri che forniscono un accesso controllato ai campi tramite gli accessor get e set.
I campi memorizzano i dati direttamente
public class Person
{
// Campi - memorizzazione diretta delle variabili
private string name;
private int age;
}Le proprietà forniscono un accesso controllato con get e set
public class Person
{
private string name;
// Proprietà con campo sottostante
public string Name
{
get { return name; }
set { name = value; }
}
}Proprietà implementate automaticamente (forma abbreviata)
public class Person
{
// Proprietà implementata automaticamente
public string Name { get; set; }
public int Age { get; set; }
}Le proprietà possono includere una logica di convalida
public class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value >= 0 && value <= 120)
age = value;
}
}
}Proprietà di sola lettura (solo accessor get)
public class Circle
{
private double radius;
public double Radius
{
get { return radius; }
}
// Proprietà calcolata di sola lettura
public double Area
{
get { return Math.PI * radius * radius; }
}
}I campi sono in genere privati e vi si accede tramite proprietà. Le proprietà ti consentono di aggiungere logica, convalida e controllo sulle modalità di accesso o modifica dei dati. Le proprietà implementate automaticamente sono comode quando non hai bisogno di logica aggiuntiva.
Sfida
MedioCrea una classe BankAccount che dimostri la differenza tra campi e proprietà:
- Un campo privato
balanceper memorizzare il saldo del conto - Una proprietà implementata automaticamente
AccountName - Una proprietà di sola lettura
Balanceche restituisce il campo del saldo - I metodi
DepositeWithdrawche modificano il campo privato
Provalo tu
using System;
class Program
{
static void Main()
{
string accountName = Console.ReadLine();
decimal initialBalance = decimal.Parse(Console.ReadLine());
decimal depositAmount = decimal.Parse(Console.ReadLine());
BankAccount account = new BankAccount(accountName, initialBalance);
Console.WriteLine($"Account: {account.AccountName}");
Console.WriteLine($"Initial Balance: ${account.Balance}");
account.Deposit(depositAmount);
Console.WriteLine($"After Deposit: ${account.Balance}");
string result = account.Withdraw(2000);
Console.WriteLine($"Withdraw attempt: {result}");
Console.WriteLine($"Final Balance: ${account.Balance}");
}
}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