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