Istruzione Enum (Visual Basic)
Aggiornamento: novembre 2007
Dichiara un'enumerazione e definisce i valori dei relativi membri.
[ <attribute list> ] [ access modifier ] [ Shadows ]
Enum enumeration name [ As data type ]
member list
End Enum
Parti
attribute list
Facoltativo. Elenco di attributi applicabili all'enumerazione. È necessario racchiudere l'elenco di attributi tra parentesi acute ("<" e ">").access modifier
Facoltativo. Specifica il tipo di codice che può accedere all'enumerazione, ad esempio uno dei seguenti:È possibile specificare ProtectedFriend per consentire l'accesso dal codice incluso nella classe dell'enumerazione, in una classe derivata o nello stesso assembly.
Shadows
Facoltativo. Specifica che l'enumerazione ridichiara e nasconde un elemento di programmazione omonimo, o un insieme di elementi di overload, di una classe base. È possibile specificare Shadows solo sull'enumerazione, non sui relativi membri.enumeration name
Obbligatorio. Nome dell'enumerazione. Per informazioni sui nomi validi , vedere Nomi di elementi dichiarati.data type
Obbligatorio se OptionStrict è On. Tipo di dati dell'enumerazione e di tutti i relativi membri.member list
Obbligatorio. Elenco delle costanti dei membri dichiarate in questa istruzione. Più membri vengono visualizzati su singole righe del codice sorgente.Ciascun member è caratterizzato dalla sintassi e dalle parti seguenti: [<attribute list>] member name [ = initializer ]
Parte
Descrizione
member name
Obbligatorio. Nome del membro.
initializer
Facoltativo. Espressione valutata in fase di compilazione e assegnata al membro.
EndEnum
Termina il blocco Enum.
Note
Un set di valori fissi correlati tra loro in modo logico possono essere definiti insieme in un'enumerazione. In tal modo vengono assegnati all'enumerazione e ai membri nomi significativi che è possibile ricordare più facilmente rispetto ai relativi valori. È quindi possibile utilizzare i membri dell'enumerazione in numerose posizioni del codice. Poiché tutti i valori correlati utilizzano lo stesso nome di enumerazione, la leggibilità del codice risulta nettamente migliorata.
L'istruzione Enum può essere utilizzata soltanto a livello di modulo o di spazio dei nomi. In altri termini, il contesto della dichiarazione per un'enumerazione deve essere costituito da un file di origine, uno spazio dei nomi, una classe, una struttura, un modulo o un'interfaccia, ma non può essere una routine. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefinito.
L'istruzione Enum può dichiarare il tipo di dati di un'enumerazione. A ciascun membro viene attribuito il tipo di dati dell'enumerazione. È possibile specificare Byte, Integer, Long, SByte, Short, UInteger, ULong o UShort.
Se non si specifica la parte initializer per un membro, quest'ultimo viene inizializzato con zero (se si tratta del primo member in member list) oppure con un valore maggiore di uno rispetto al member immediatamente precedente.
Per impostazione predefinita, le enumerazioni dei membri di classe, struttura, modulo e interfaccia dispongono di accesso Public. È possibile modificarne i livelli di accesso mediante gli appositi modificatori. Per impostazione predefinita, le enumerazioni dei membri dello spazio dei nomi dispongono di accesso Friend. È possibile modificarne i livelli di accesso in Public, ma non in Private o Protected. Per ulteriori informazioni, vedere Livelli di accesso in Visual Basic.
Contesto della dichiarazione. Un'enumerazione dichiarata a livello di modulo, al di fuori di una routine, è un'enumerazione di membri ed è un membro della classe, della struttura, del modulo o dell'interfaccia che la dichiara.
Un'enumerazione dichiarata a livello di spazio dei nomi, al di fuori di una classe, di una struttura, di un modulo o di un'interfaccia, è solo un membro dello spazio dei nomi in cui si trova.
Attributi. È possibile applicare attributi a un'intera enumerazione, ma non singolarmente ai relativi membri. Un attributo fornisce informazioni ai metadati dell'assembly.
Modificatori. Per impostazione predefinita, tutte le enumerazioni sono tipi e i relativi campi sono costanti. Pertanto le parole chiave Shared, Static e ReadOnly non possono essere utilizzate per la dichiarazione di un'enumerazione o dei relativi membri.
Regole dei tipi di dati
Tipo predefinito. Se non si specifica la parte data type per l'enumerazione, a ciascun membro viene attribuito il tipo di dati del relativo initializer. Se si specificano sia la parte data type che la parte initializer, il tipo di dati di initializer deve poter essere convertito in data type. Se non vengono specificate né data type né initializer, verrà utilizzato il tipo di dati predefinito Integer.
Inizializzazione. L'istruzione Enum è in grado di inizializzare il contenuto di membri selezionati in member list. Per fornire un'espressione da assegnare al membro, viene utilizzata la parte initializer.
L'espressione fornita in ciascun initializer può essere una qualsiasi combinazione di valori letterali, altre costanti e membri di enumerazione già definiti, incluso un membro precedente di tale enumerazione. Per combinare tali elementi è possibile utilizzare operatori aritmetici e logici.
Nella parte initializer non è possibile utilizzare variabili o funzioni, ma è consentito l'utilizzo di parole chiave di conversione quali CByte e CShort. È inoltre possibile utilizzare AscW, se lo si chiama con una costante String o un argomento Char, poiché è possibile eseguirne la valutazione in fase di compilazione.
Comportamento
Livello di accesso. Tutti i membri di un'enumerazione dispongono di accesso pubblico e non consentono l'utilizzo di alcun modificatore di accesso. Se tuttavia l'enumerazione dispone di un livello di accesso più limitato, viene applicato il livello di accesso specificato per l'enumerazione.
Ambito. Le enumerazioni di membri sono accessibili da qualsiasi punto della classe, della struttura, dell'interfaccia o del modulo. Le enumerazioni dei membri dello spazio dei nomi sono accessibili dal codice incluso in tale spazio dei nomi.
Qualificazione. Il codice al di fuori di una classe, di una struttura o di un modulo deve qualificare il nome di un'enumerazione di membri con il nome di tale classe, struttura o modulo.
Valori non validi. Se il valore di un membro supera l'intervallo consentito per il tipo di dati sottostante o se si inizializza un membro al valore massimo consentito dal tipo di dati sottostante, il compilatore rileva un errore.
Le variabili di enumerazione sono variabili dichiarate con il tipo Enum. Questo tipo di dichiarazione consente di controllare i valori assegnati alla variabile. È tuttavia sempre possibile assegnare un valore che non è un membro di enumerazione, purché il relativo tipo di dati possa essere convertito nel tipo di dati dell'enumerazione. Questo risulta particolarmente utile quando l'enumerazione è un campo relativo al flag e viene assegnata una combinazione di flag alla variabile di enumerazione. Nell'esempio riportato di seguito viene illustrata un'assegnazione di più flag a una variabile di enumerazione.
Enum filePermissions
create = 1
read = 2
write = 4
delete = 8
End Enum
Dim file1Perm As filePermissions
file1Perm = filePermissions.create Or filePermissions.read
È necessario qualificare ogni riferimento a un membro di enumerazione, mediante il nome di una variabile di enumerazione o mediante il nome dell'enumerazione stessa. Come illustrato nell'esempio precedente, è possibile fare riferimento al primo membro come filePermissions.create, ma non come create.
Esempio
Nell'esempio riportato di seguito viene utilizzata l'istruzione Enum per definire un insieme correlato di valori costanti denominati. Nel caso specifico, i valori rappresentano i colori che è possibile scegliere per la definizione di form per l'immissione di dati in un database.
Public Enum InterfaceColors
MistyRose = &HE1E4FF&
SlateGray = &H908070&
DodgerBlue = &HFF901E&
DeepSkyBlue = &HFFBF00&
SpringGreen = &H7FFF00&
ForestGreen = &H228B22&
Goldenrod = &H20A5DA&
Firebrick = &H2222B2&
End Enum
Nell'esempio riportato di seguito vengono illustrati valori che includono numeri sia positivi che negativi.
Enum SecurityLevel
IllegalEntry = -1
MinimumSecurity = 0
MaximumSecurity = 1
End Enum
Vedere anche
Concetti
Conversioni implicite ed esplicite
Enumerazioni e costanti intrinseche
Riferimenti
Istruzione Const (Visual Basic)
Funzioni di conversione del tipo