Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Costruiamo 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 classe Order nel namespace OrderSystem. Ogni ordine deve avere una proprietà di istanza OrderId (int) e CustomerName (string). La classe deve anche tenere traccia del numero totale di ordini creati usando un campo statico TotalOrders e fornire un metodo statico GetNextOrderId() 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: 2

Provalo 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}
    }
}
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