Condividi tramite


Livelli di accessibilità (Riferimenti per C#)

Usare i modificatori di accesso, public, protected, internalo privateper specificare uno dei livelli di accessibilità dichiarati seguenti per i membri.

Accessibilità dichiarata Significato
public L'accesso non è limitato.
protected L'accesso è limitato alla classe contenitore o ai tipi derivati dalla classe contenitore.
internal L'accesso è limitato all'assemblaggio corrente.
protected internal L'accesso è limitato all'assembly corrente o ai tipi derivati della classe contenitrice.
private L'accesso è limitato al tipo contenitore.
private protected L'accesso è limitato alla classe contenitrice o ai tipi derivati dalla classe contenitrice all'interno dell'assembly corrente.

È consentito un solo modificatore di accesso per un membro o un tipo, tranne quando si usano le protected internal combinazioni o private protected .

I modificatori di accesso non sono consentiti per gli 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 viene specificato alcun modificatore di accesso in una dichiarazione membro, viene usata un'accessibilità predefinita.

I tipi di primo livello, che non sono annidati in altri tipi, possono avere internal solo o public accessibilità. 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à dei membri predefinita Accessibilità dichiarata consentita del membro
enum public Nessuno
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 interface membro con private accessibilità deve avere un'implementazione predefinita.

Annotazioni

Se una classe o uno struct viene modificato con il modificatore di record parole chiave, sono consentiti gli stessi modificatori di accesso.
Inoltre, con il modificatore l'accessibilità record dei membri predefinita è ancora private per la classe e lo struct.

L'accessibilità di un tipo annidato dipende dal relativo dominio di accessibilità, determinato sia dall'accessibilità dichiarata del membro che dal dominio di accessibilità del tipo che lo contiene immediatamente. 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#.

Vedere anche