Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe FlagsAttribute

Indica che un'enumerazione può essere considerata come campo di bit; ovvero un set di flag.

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets.Enum, Inherited = false)]
[ComVisibleAttribute(true)]
public class FlagsAttribute : Attribute

Il tipo FlagsAttribute espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreFlagsAttributeInizializza una nuova istanza di FlagsAttribute classe.
In alto

  NomeDescrizione
Proprietà pubblicaTypeId Quando implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute)
In alto

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEqualsInfrastruttura. Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato. (Ereditato da Attribute)
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetHashCode Restituisce il codice hash per questa istanza. (Ereditato da Attribute)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoIsDefaultAttribute Quando viene eseguito l'override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute)
Metodo pubblicoSupportato da XNA FrameworkMatch Quando viene eseguito l'override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute)
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto

  NomeDescrizione
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetIDsOfNames Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetTypeInfo Recupera le informazioni sui tipi per un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.Invoke Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da Attribute)
In alto

I campi di bit sono normalmente utilizzati per elenchi di elementi che possono verificarsi in combinazione, mentre le costanti di enumerazione sono in genere utilizzate per elenchi di reciproca elementi esclusivi. Di conseguenza, i campi di bit sono progettati per essere combinate con un'operazione OR bit per bit per generare valori senza nome, mentre le costanti enumerate non sono. I linguaggi variano in base all'utilizzo dei campi di bit paragonati alle costanti di enumerazione.

Attributi di FlagsAttribute

AttributeUsageAttribute si applica a questa classe e proprio Inherited la proprietà specifica false. Questo attributo può essere applicato solo alle enumerazioni.

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.

Nell'esempio di codice seguente viene illustrato l'utilizzo di FlagsAttribute attributo e viene illustrato l'effetto su ToString metodo di l FlagsAttribute su Enum dichiarazione.


// 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
*/


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, 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.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft