|
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
|
Traduzione
Originale
|
Classe FlagsAttribute
Spazio dei nomi: System
Assembly: mscorlib (in mscorlib.dll)
Il tipo FlagsAttribute espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
![]() ![]() ![]() ![]() | Equals | Infrastruttura. |
![]() ![]() ![]() ![]() | Finalize | |
![]() ![]() ![]() ![]() | GetHashCode | |
![]() ![]() ![]() ![]() | GetType | |
![]() | IsDefaultAttribute | |
![]() ![]() | Match | |
![]() ![]() ![]() ![]() | MemberwiseClone | |
![]() ![]() ![]() ![]() | ToString |
| Nome | Descrizione | |
|---|---|---|
![]() ![]() | _Attribute.GetIDsOfNames | |
![]() ![]() | _Attribute.GetTypeInfo | |
![]() ![]() | _Attribute.GetTypeInfoCount | |
![]() ![]() | _Attribute.Invoke |
Attributi di FlagsAttribute
Linee guida per FlagsAttribute e Enum
utilizzare FlagsAttribute attributo personalizzato per un'enumerazione solo se un'operazione bit per bit (AND, OR, ESCLUSIVA OR) deve essere eseguita su un valore numerico. Definire le costanti di enumerazione nelle potenze di due, ovvero, 1, 2, 4, 8, e così via. Ciò significa che i singoli flag nelle costanti combinate di enumerazione non si sovrappongono. Considerare la possibilità di creare una costante enumerata per le combinazioni di uso comune il flag. Ad esempio, se si dispone di enumerazione utilizzata per le operazioni di I/O di file che contiene le costanti enumerate Read = 1 e Write = 2, considerare la possibilità di creare la costante enumerata ReadWrite = Read OR Write, che combina Read e Write flag. Inoltre, l'operazione OR bit per bit utilizzata per combinare i flag può essere considerata un concetto avanzato in alcune circostanze che non devono essere necessarie per semplici attività. Prestare attenzione se si definisce un numero negativo come costante enumerata il flag poiché molti percorsi del flag potrebbero essere impostate su 1, che potrebbe eseguire il codice che offusca e favorire gli errori di codifica. Un modo pratico per verificare se un flag è impostato in un valore numerico prevede l'esecuzione di un'operazione di AND bit per bit tra il valore numerico e la costante enumerata il flag, che imposta tutti i bit nel valore numerico a zero che non corrispondono al flag, il test se il risultato di tale operazione è uguale alla costante enumerata il flag. utilizzo None come il nome della costante enumerata il flag del cui valore è zero. Non è possibile utilizzare None costante enumerata in un'operazione di AND bit per bit da provare un flag poiché il risultato è sempre zero. Tuttavia, è possibile eseguire un logico, non un bit per bit, di confronto tra il valore numerico e None costante enumerata per determinare se i bit nel valore numerico vengono impostati. Se creare un'enumerazione di valore anziché un'enumerazione di flag, è ancora possibile effettuare creare un oggetto None costante enumerata. Il motivo è che per impostazione predefinita la memoria utilizzata per l'enumerazione viene inizializzata su zero da Common Language Runtime. Pertanto, se non si definisce una costante del cui valore è zero, l'enumerazione contiene un valore non valido quando viene creata. Se c " è un caso predefinito che ovvio l'applicazione deve rappresentare, considerare l'utilizzo di una costante enumerata il cui valore è zero rappresenta l'impostazione predefinita. Se non c " è caso predefinito, considerare l'utilizzo di una costante enumerata il cui valore è zero che indica il caso non rappresentato da una qualsiasi delle altre costanti enumerate. Non definire solo un valore di enumerazione per eseguire lo stato dell'enumerazione stesso. Ad esempio, non definire una costante enumerata che solo contrassegna la fine dell'enumerazione. Se è necessario determinare l'ultimo valore dell'enumerazione, verificare il valore in modo esplicito. Inoltre, è possibile eseguire un controllo di intervallo per la prima e l'ultima costante enumerata se tutti i valori nell'intervallo sono validi. Non specificare le costanti enumerate che siano riservate per un utilizzo futuro. Quando si definisce un metodo o una proprietà che accettano una costante enumerata come valore, è opportuno convalidare il valore. Il motivo è che è possibile eseguire il cast di un valore numerico al tipo di enumerazione anche se tale valore numerico non è definito nell'enumerazione.
// Example of the FlagsAttribute attribute. using System; class FlagsAttributeDemo { // Define an Enum without FlagsAttribute. enum SingleHue : short { Black = 0, Red = 1, Green = 2, Blue = 4 }; // Define an Enum with FlagsAttribute. [FlagsAttribute] enum MultiHue : short { Black = 0, Red = 1, Green = 2, Blue = 4 }; static void Main( ) { Console.WriteLine( "This example of the FlagsAttribute attribute \n" + "generates the following output." ); Console.WriteLine( "\nAll possible combinations of values of an \n" + "Enum without FlagsAttribute:\n" ); // Display all possible combinations of values. for( int val = 0; val <= 8; val++ ) Console.WriteLine( "{0,3} - {1}", val, ( (SingleHue)val ).ToString( ) ); Console.WriteLine( "\nAll possible combinations of values of an \n" + "Enum with FlagsAttribute:\n" ); // Display all possible combinations of values. // Also display an invalid value. for( int val = 0; val <= 8; val++ ) Console.WriteLine( "{0,3} - {1}", val, ( (MultiHue)val ).ToString( ) ); } } /* This example of the FlagsAttribute attribute generates the following output. All possible combinations of values of an Enum without FlagsAttribute: 0 - Black 1 - Red 2 - Green 3 - 3 4 - Blue 5 - 5 6 - 6 7 - 7 8 - 8 All possible combinations of values of an Enum with FlagsAttribute: 0 - Black 1 - Red 2 - Green 3 - Red, Green 4 - Blue 5 - Red, Blue 6 - Green, Blue 7 - Red, Green, Blue 8 - 8 */
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.


