Campi e metodi statici
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 12 di 70.
Finora, ogni campo e metodo che abbiamo creato appartiene a singoli oggetti. Ma a volte servono dati o comportamenti che appartengono alla classe stessa e sono condivisi da tutte le istanze. È qui che entra in gioco la parola chiave static.
Un campo statico è condiviso da tutti gli oggetti di una classe. Ne esiste una sola copia, indipendentemente da quante istanze crei:
public class Player
{
public static int TotalPlayers = 0;
public string Name { get; set; }
public Player(string name)
{
Name = name;
TotalPlayers++;
}
}Ogni volta che viene creato un nuovo Player, TotalPlayers aumenta. Tutti i giocatori condividono questo stesso contatore.
Un metodo statico appartiene alla classe e può essere chiamato senza creare un oggetto:
public class Calculator
{
public static int Add(int a, int b)
{
return a + b;
}
}
// Chiamato sulla classe, non su un'istanza
int result = Calculator.Add(5, 3);Nota che accedi ai membri statici usando il nome della classe, non un riferimento a un oggetto. I metodi statici non possono accedere ai campi di istanza né usare this, poiché non appartengono a un oggetto specifico.
Hai già usato membri statici senza rendertene conto. Console.WriteLine() è un metodo statico e Math.PI è un campo statico.
Sfida
FacileCostruiamo un sistema di tracciamento degli ordini che utilizza membri statici per tenere traccia di tutti gli ordini effettuati nella tua applicazione.
Creerai due file per organizzare il codice:
Order.cs: definisci una classeOrdernel namespaceOrderSystem. Ogni ordine deve avere una proprietà di istanzaOrderId(int) eCustomerName(string). La classe deve anche tenere traccia del numero totale di ordini creati usando un campo staticoTotalOrderse fornire un metodo staticoGetNextOrderId()che restituisce il successivo ID ordine disponibile (a partire da 1). Il costruttore deve accettare il nome di un cliente, assegnare automaticamente l'ID ordine usando il metodo statico e incrementare il conteggio totale degli ordini.Program.cs: nel file principale, crea ordini in base all'input e visualizza i relativi dettagli insieme al conteggio totale degli ordini.
Riceverai due input che rappresentano i nomi dei clienti per due ordini distinti.
Per ogni ordine, stampa i relativi dettagli in questo formato:
Order #{OrderId} - Customer: {CustomerName}Dopo aver creato entrambi gli ordini, stampa il conteggio totale:
Total Orders: {TotalOrders}Ad esempio, se gli input sono Alice e Bob, l'output dovrebbe essere:
Order #1 - Customer: Alice
Order #2 - Customer: Bob
Total Orders: 2Provalo tu
using System;
using OrderSystem;
class Program
{
public static void Main(string[] args)
{
// Leggi i nomi dei clienti
string customer1 = Console.ReadLine();
string customer2 = Console.ReadLine();
// TODO: Crea due oggetti Order con i nomi dei clienti
// TODO: Stampa i dettagli di ogni ordine nel formato:
// Order #{OrderId} - Customer: {CustomerName}
// TODO: Stampa il numero totale degli ordini nel formato:
// Total Orders: {TotalOrders}
}
}
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