Negli esempi visti finora, per accedere ai metodi di una classe (ad es. Persona
) occorreva creare un'istanza della classe. In alcuni casi, tuttavia, può risultare utile avere delle procedure che non hanno bisogno di un'istanza per essere utilizzate, ma che possono essere richiamate semplicemente con il nome della classe.
Metodi «statici»
Ad esempio, supponiamo che il metodo Quadrato di sia contenuto nella classe Matematica. È sensato pensare che una procedura di questo tipo possa essere richiamata senza dover prima creare un'istanza della classe che la contiene. Per questo si usa la parola chiave static (che corrisponde allo Shared di VB .NET):
public static int Quadrato(int N)
{
return N * N;
}
L'utilizzo di questa routine è immediato:
//q assume il valore 25
int q = Matematica.Quadrato(5);
Notiamo che le funzioni WriteLine() e ReadLine() della classe Console, che abbiamo introdotto in precedenza, sono proprio metodi statici.
I namespace
Più classi possono essere raggruppate in un unico namespace. Ad esempio:
namespace Prova
{
public class Classe1
{ }
public class Classe2
{ }
}
Con questo costrutto, per dichiarare, ad esempio, un oggetto di tipo Classe1 è necessario scrivere:
Prova.Classe1 c1 = new Prova.Classe1();
lo stesso vale per Classe2
. Fatto questo, è possibile accedere ai metodi ed alle proprietà delle classi nel modo consueto. I namespace sono sempre public.
È possibile definire namespace annidati, ad esempio:
namespace N1
{
namespace N2
{
public class Classe1
{ }
public class Classe2
{ }
}
}
N1.N2.Classe1 c1 = new N1.N2.Classe1();
N1.N2.Classe2 c2 = new N1.N2.Classe2();
Tutte le classi che compongono l'infrastruttura .NET sono organizzate in namespace. Ad esempio, la classe Form, da cui ereditano tutte le Windows form (che tratteremo in seguito) è raggiungibile nel namespace Windows.System.Forms.Form.
Per non dover indicare ogni volta i namespace in cui si trovano le classi che si stanno utilizzando, è possibile utilizzare la parola chiave using (analoga a import di Java), con cui si specifica in quali namespace devono essere cercate le classi.
Le clausole using devono essere specificate all'inizio della classe, prima di qualunque altra istruzione. Ad esempio, nel programma HelloWorld
realizzato nelle precedenti lezioni si fa uso della classe Console
, che è contenuta nel namespace System
; invece di indicarlo esplicitamente, è possibile ricorrere alla parola chiave using:
using System;
public class HelloWorld
{
public static void Main()
{
Console.WriteLine("Ciao Mondo!");
Console.ReadLine();
}
}
Fare clic qui per scaricare il codice sorgente della classe Matematica, compreso un esempio del suo utilizzo.