Pagina personale di:
Carlo Vecchio
appunti di C#, R, SQL Server, ASP.NET, algoritmi, numeri
Vai ai contenuti

C# - Classi statiche

C#

Classi statiche
   •   Una classe statica
è una classe della quale non è possibile creare oggetti (istanze).
   •   Per accedere ai membri della classe, non essendoci oggetti, si utilizza il nome della classe stessa.
   •   L'utilizzo di una classe statica è - per esempio - come contenitore di metodi con solo parametri di input e di output e che non leggono/scrivono campi di istanza interni all'oggetto.
   •   Per esempio la classe .NET System.Math è una classe statica in quanto ha diversi metodi che eseguono operazioni matematiche.
   •   Quindi una classe statica contiene solo membri statici (altrimenti il compilatore dà un errore). È equivalente a una classe non statica con (1) membri statici e (2) costruttore privato, per impedire la creazione si istanze. Se però si imposta direttamente tutta la classe come statica, si permette al compilatore di effettuare i dovuti controlli.
   •   Le classi statiche sono sealed
, cioè non possono essere ereditate.
   •   Le classi statiche possono contenere un costruttore, ovviamente statico.

Esempio
   •   In questo esempio, viene definita la classe statica, 'FormuleDelCerchio' con il metodo statico 'Circonferenza'.

   static class FormuleDelCerchio
   {
       
public static double Circonferenza(double raggio)
       {
           
return 2 * Math.PI * raggio;
       }
       
// Altre formule
       
// ...
   }

   •   Utilizzo della classe statica (non si istanziano oggetti):

   Console.WriteLine("Raggio: {0} - Circonferenza {1}", 5, FormuleDelCerchio.Circonferenza(5));
   
Console.ReadKey();

Membri statici
   •   Anche una classe non statica può contenere campi, proprietà, metodi e eventi statici. Per accedere ai membri statici occorre utilizzare il nome della classe in quanto questi membri non sono accessibili alle istanze (oggetti).
   •   Un campo statico o una proprietà statica esiste in una sola copia.
   •   Dichiarare uno o più membri statici in una classe non statica è una tecnica utilizzata per
       - contare il numero di oggetti creati della classe;
       - condividere un valore tra tutti gli oggetti della classe.

Esempio
   •   In questo esempio, viene definita la classe non statica, 'Punto' con il campo statico 'NumeroIstanze'.

   class Punto
   {
       
public int CoordinataX;   // Campo public
       
public int CoordinataY;   // Campo public
       
static public int NumeroIstanze;   // Campo public e Statico
       
// Costruttore
       
public Punto()
       {
           NumeroIstanze++;
       }
   }

   •   Utilizzo della classe:

   // Si può accedere al campo statico utilizzando il nome della classe
   
// e non dell'oggetto
   
Punto.NumeroIstanze = 0;       
   
// Prima istanza
   
Punto myPoint1 = new Punto();
   myPoint1.CoordinataX = 1;
   myPoint1.CoordinataY = 1;
   
// Seconda istanza
   
Punto myPoint2 = new Punto();
   myPoint2.CoordinataX = 2;
   myPoint1.CoordinataY = 2;
   
// Numero di istanze generate
   
Console.WriteLine(Punto.NumeroIstanze);
   
Console.ReadKey();

© 2020 Carlo Vecchio
Torna ai contenuti