Spazi dei nomi

Il compilatore ha installato “spazi dei nomi„ per distinguere tra gli identificatori utilizzati per diversi tipi di elementi.I nomi all'interno di ogni spazio dei nomi devono essere univoci evitare il conflitto, ma un nome identico può apparire in più di uno spazio dei nomi.Ciò significa che è possibile utilizzare lo stesso identificatore per due o più elementi diversi, a condizione che gli elementi negli spazi dei nomi differenti.Il compilatore possa risolvere i riferimenti basati sul contesto sintattico dell'identificatore nel programma.

[!NOTA]

Non confondere la nozione limitata di C# di uno spazio dei nomi con la funzionalità di “spazio dei nomi„ C++.vedere Spazi dei nomi in C#Un riferimento al linguaggio per ulteriori informazioni.

Questo elenco vengono descritti gli spazi dei nomi utilizzati in C#.

  • Le etichette di istruzione
    Le etichette delle istruzioni denominati fa parte delle istruzioni.Le definizioni di etichette delle istruzioni vengono sempre seguite da due punti ma non fanno parte di evento etichette.Gli utilizzi di etichette delle istruzioni sempre seguono immediatamente la parola chiave goto.Le etichette delle istruzioni non devono essere univoci da altri nomi o dai nomi di etichetta in altre funzioni.

  • struttura, unione e tag di enumerazione
    Questi tag fanno parte della struttura, unione e identificatori di tipo di enumerazione e, se presente, sempre subito dopo le parole riservate struct, unione, o enum.I nomi dei tag devono essere univoci da tutti gli altri struttura, enumerazione, o tag di unione con la stessa visibilità.

  • Membri delle strutture o unioni
    I nomi dei membri vengono allocati negli spazi dei nomi associati a ciascun tipo di unione e della struttura.Ovvero lo stesso identificatore può essere un nome di un componente in qualsiasi numero di in strutture o unioni contemporaneamente.Le definizioni dei nomi componenti si verificano sempre all'interno degli identificatori del tipo di struttura o unione.Gli utilizzi dei nomi componenti sempre seguono immediatamente gli operatori di selezione dei membri (- > e .).Il nome di un membro deve essere univoco nella struttura o nell'unione, ma non deve essere diverso da altri nomi nel programma, inclusi i nomi dei membri delle strutture e unioni diversi, o dal nome della struttura stessa.

  • identificatori comuni
    Tutti gli altri nomi rientrano in uno spazio dei nomi che include le variabili, le funzioni (parametri formali inclusi e variabili locali) e le costanti di enumerazione.I nomi degli identificatori nested la visibilità, pertanto è possibile ridefinirli all'interno di blocchi.

  • nomi di typedef
    I nomi di typedef non possono essere utilizzate come identificatori nello stesso ambito.

Ad esempio, poiché i tag di struttura, i membri della struttura e i nomi di variabili sono in tre spazi dei nomi diversi, i tre elementi denominati student in questo esempio non siano in conflitto.Il contesto di ogni elemento consente l'interpretazione corretta di ogni occorrenza di student nel programma.Per informazioni sulle strutture, vedere strutturare le dichiarazioni).

struct student {
   char student[20];
   int class;
   int id;
   } student;

quando student viene visualizzato dopo struct la parola chiave, il compilatore viene riconosciuto come un tag della struttura.quando student viene visualizzato dopo un operatore di selezione dei membri (- > o .), il nome si riferisce al membro della struttura.in altri contesti, student fa riferimento alla variabile di struttura.Tuttavia, esegue l'overload dello spazio dei nomi di tag non è consigliata poiché nasconde il significato.

Vedere anche

Concetti

Struttura del programma