Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Nelle sezioni che seguono vengono messi a confronto i modificatori di C# e Java.
Modificatori di accesso
I modificatori di C# sono molto simili a quelli di Java, con alcune piccole differenze. Ogni membro di una classe, o la classe stessa, può essere dichiarato con un modificatore di accesso per definire l'ambito dell'accesso consentito. Le classi che non vengono dichiarate all'interno di altre classi possono specificare solo i modificatori public o internal. Le classi nidificate, come altri membri di classe, possono specificare indifferentemente i cinque modificatori di accesso riportati di seguito:
-
Visibile a tutti.
-
Visibile solo dalle classi derivate.
-
Visibile solo all'interno della classe specificata.
-
Visibile solo all'interno dello stesso assembly.
protected internal
Visibile solo all'assembly corrente o ai tipi derivati dalla classe che lo contiene.
Modificatori public, protected e private
Un modificatore public rende il membro disponibile ovunque, sia all'interno che all'esterno della classe. Un modificatore protected indica che l'accesso è limitato alla classe che lo contiene o alle classi da essa derivate. Un modificatore private indica che l'accesso è possibile solo dal tipo che lo contiene. In C# il modificatore di accesso predefinito è private, mentre in Java viene utilizzato come accesso predefinito qualsiasi punto del package che lo contiene.
Modificatore internal
Un elemento internal è accessibile solo dall'assembly corrente. Un assembly di .NET Framework corrisponde in pratica a un file JAR di Java e rappresenta i blocchi predefiniti utilizzati per la costruzione di altri programmi.
Modificatore protected internal
Un elemento protected internal è visibile solo all'assembly corrente o ai tipi derivati dalla classe che lo contiene.
Modificatore sealed
Una classe con il modificatore sealed nella relativa dichiarazione è esattamente l'opposto di una classe astratta, in quanto non può essere ereditata. È possibile contrassegnare una classe come sealed per evitare che altre classi eseguano l'override della relativa funzionalità. Naturalmente le classi sealed non possono essere astratte. Si noti inoltre che una struttura è implicitamente di tipo sealed e pertanto non può essere ereditata. Utilizzare il modificatore sealed equivale a contrassegnare una classe con la parola chiave final in Java.
Modificatore readonly
Per definire una costante in C#, utilizzare il modificatore const o readonly anziché la parola chiave final di Java. Il fattore di distinzione tra questi due modificatori in C# è costituito dal fatto che gli elementi const vengono gestiti in fase di compilazione, mentre i valori dei campi readonly vengono specificati in fase di esecuzione. L'assegnazione a campi readonly pertanto può avvenire sia nel costruttore della classe che nella dichiarazione. La classe riportata di seguito dichiara ad esempio una variabile readonly denominata IntegerVariable che viene inizializzata nel costruttore della classe:
public class SampleClass
{
private readonly int intConstant;
public SampleClass () //constructor
{
// You are allowed to set the value of the readonly variable
// inside the constructor
intConstant = 5;
}
public int IntegerConstant
{
set
{
// You are not allowed to set the value of the readonly variable
// anywhere else but inside the constructor
// intConstant = value; // compile-time error
}
get
{
return intConstant;
}
}
}
class TestSampleClass
{
static void Main()
{
SampleClass obj= new SampleClass();
// You cannot perform this operation on a readonly field.
obj.IntegerConstant = 100;
System.Console.WriteLine("intConstant is {0}", obj.IntegerConstant); // 5
}
}
Se un modificatore readonly viene applicato a un campo statico, deve essere inizializzato nel costruttore statico della classe.
Vedere anche
Concetti
Riferimenti
Modificatori di accesso (Guida per programmatori C#)
Costanti (Guida per programmatori C#)