Enumerationen nicht mit FlagsAttribute markieren

Aktualisiert: November 2007

     TypeName

DoNotMarkEnumsWithFlags

CheckId

CA2217

Kategorie

Microsoft.Usage

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Eine extern sichtbare Enumeration wird mit FlagsAttribute gekennzeichnet und weist einen oder mehrere Werte auf, die keine Potenzen von 2 oder keine Kombination von anderen in der Enumeration definierten Werten sind.

Regelbeschreibung

In einer Enumeration sollte FlagsAttribute nur vorhanden sein, wenn jeder in der Enumeration definierte Wert eine Potenz von 2 oder eine Kombination definierter Werte ist.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, entfernen Sie FlagsAttribute aus der Enumeration.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Das folgende Beispiel zeigt eine Enumeration Color, die den Wert 3 enthält, der weder eine Potenz von 2 noch eine Kombination aus den anderen definierten Werten ist. Die Color-Enumeration sollte nicht mit dem FlagsAttribute gekennzeichnet werden.

Imports System

Namespace Samples

    ' Violates this rule    
    <FlagsAttribute()> _
    Public Enum Color

        None = 0
        Red = 1
        Orange = 3
        Yellow = 4

    End Enum
End Namespace
using System;

namespace Samples
{    
    // Violates this rule    
    [FlagsAttribute]        
    public enum Color
    { 
        None    = 0, 
        Red     = 1, 
        Orange  = 3, 
        Yellow  = 4 
    }
}

using namespace System;

namespace Samples 
{
    // Violates this rule    
    [FlagsAttribute]    
    public enum class Color    
    {        
        None   = 0,        
        Red    = 1,        
        Orange = 3,        
        Yellow = 4    
    };
}

Im folgenden Beispiel wird eine Enumeration Days veranschaulicht, die die Anforderungen zur Kennzeichnung mit dem System.FlagsAttribute erfüllt.

Imports System
Namespace Samples

    <FlagsAttribute()> _
    Public Enum Days

        None = 0
        Monday = 1
        Tuesday = 2
        Wednesday = 4
        Thursday = 8
        Friday = 16
        All = Monday Or Tuesday Or Wednesday Or Thursday Or Friday

    End Enum
End Namespace

using System;

namespace Samples
{    
    [FlagsAttribute]    
    public enum Days    
    {        
        None        = 0,        
        Monday      = 1,        
        Tuesday     = 2,        
        Wednesday   = 4,        
        Thursday    = 8,        
        Friday      = 16,        
        All         = Monday| Tuesday | Wednesday | Thursday | Friday    
    }
}

using namespace System;

namespace Samples 
{    
    [FlagsAttribute]    
    public enum class Days    
    {        
        None        = 0,        
        Monday      = 1,        
        Tuesday     = 2,        
        Wednesday   = 4,        
        Thursday    = 8,        
        Friday      = 16,        
        All         = Monday| Tuesday | Wednesday | Thursday | Friday    
    };
}

Verwandte Regeln

Enumerationen mit FlagsAttribut markieren

Siehe auch

Referenz

System.FlagsAttribute