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#.

Vedi anche