Livelli di accessibilità (Riferimenti per C#)
Usare i modificatori di accesso public
, protected
, internal
o private
per specificare uno dei livelli seguenti di accessibilità dichiarata per i membri.
Accessibilità dichiarata | Significato |
---|---|
public |
L'accesso non è limitato. |
protected |
L'accesso è limitato alla classe o ai tipi derivati dalla classe che li contiene. |
internal |
L'accesso è limitato all'assembly corrente. |
protected internal |
L'accesso è limitato all'assembly corrente o ai tipi derivati dalla classe che li contiene. |
private |
L'accesso è limitato al tipo contenitore. |
private protected |
L'accesso è limitato alla classe o ai tipi derivati dalla classe che li contiene all'interno dell'assembly corrente. |
Per un membro o un tipo è consentito solo un modificatore di accesso, tranne quando si usano le combinazioni protected internal
o private protected
.
I modificatori di accesso non sono consentiti negli spazi dei nomi. Gli spazi dei nomi non hanno restrizioni di accesso.
A seconda del contesto in cui si verifica una dichiarazione di membro, sono consentite solo determinate accessibilità dichiarate. Se non è specificato nessun modificatore di accesso in una dichiarazione di membro, viene usata un'accessibilità predefinita.
I tipi di primo livello, che non sono annidati in altri tipi, possono avere solo l'accessibilità internal
o public
. L'accessibilità predefinita per questi tipi è internal
.
I tipi annidati, che sono membri di altri tipi, possono avere accessibilità dichiarate come indicato nella tabella seguente.
Membri di | Accessibilità predefinita del membro | Accessibilità dichiarate e consentite del membro |
---|---|---|
enum |
public |
None |
class |
private |
public protected internal private protected internal private protected |
interface |
public |
public protected internal private *protected internal private protected |
struct |
private |
public internal private |
* Un membro interface
con accessibilità private
deve avere un'implementazione predefinita.
Nota
Se una classe o uno struct viene modificato con il modificatore di parole chiave record
, sono consentiti gli stessi modificatori di accesso.
Inoltre, con il modificatore record
, l'accessibilità dei membri predefiniti è ancora private
per la classe e lo struct.
L'accessibilità di un tipo annidato dipende dal relativo dominio di accessibilità, che è determinato dall'accessibilità dichiarata del membro e dal dominio di accessibilità del tipo contenitore. Tuttavia il dominio di accessibilità di un tipo annidato non può essere superiore a quello del tipo che lo contiene.
Specifiche del linguaggio C#
Per altre informazioni, vedere la specifica del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.