CA2217: Neoznačujte výčty pomocí FlagsAttribute
TypeName |
DoNotMarkEnumsWithFlags |
CheckId |
CA2217 |
Kategorie |
Microsoft.Usage |
Narušující změna |
Nenarušující |
Příčina
Výčet viditelný z vnějšku je označen atributem FlagsAttribute a má jednu nebo více hodnot, které nejsou mocninami dvou nebo kombinací jiných definovaných hodnot výčtu.
Popis pravidla
Výčet by měl být atributem FlagsAttribute označen pouze, pokud je každá hodnota ve výčtu mocninou dvou nebo kombinací definovaných hodnot.
Jak vyřešit porušení
Pro vyřešení porušení tohoto pravidla je potřeba odstranit atribut FlagsAttribute od výčtu.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.
Příklad
Následující příklad ukazuje výčet Color, který obsahuje hodnotu 3, která není mocninou dvou ani kombinací definovaných hodnot.Výčet Color by neměl být označen atributem FlagsAttribute.
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
};
}
Následující příklad ukazuje výčet Days, který odpovídá požadavkům pro označení atributem System.FlagsAttribute.
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
};
}
Související pravidla
CA1027: Označte výčty pomocí FlagsAttribute