CA2217: Non contrassegnare le enumerazioni con FlagsAttribute
TypeName |
DoNotMarkEnumsWithFlags |
CheckId |
CA2217 |
Category |
Microsoft.Usage |
Breaking Change |
Non sostanziale |
Causa
Un'enumerazione visibile esternamente è contrassegnata con FlagsAttribute e presenta uno o più valori che non sono potenze di due o una combinazione degli altri valori definiti sull'enumerazione.
Descrizione della regola
L'attributo FlagsAttribute deve essere presente solo se ogni valore definito nell'enumerazione è una potenza di due o una combinazione di valori definiti.
Come correggere le violazioni
Per correggere una violazione di questa regola, rimuovere FlagsAttribute dall'enumerazione.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio riportato di seguito viene illustrata un'enumerazione, Color, che contiene il valore 3, il quale non è una potenza di due, né una combinazione di nessuno dei valori definiti. L'enumerazione Color non deve essere contrassegnata con l'attributo 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
};
}
Nell'esempio riportato di seguito viene illustrata un'enumerazione, Days, che soddisfa i requisiti necessari per essere contrassegnata con l'attributo 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
};
}
Regole correlate
CA1027: Contrassegnare le enumerazioni con FlagsAttribute