CA2217: Não marque enums com FlagsAttribute
TypeName |
DoNotMarkEnumsWithFlags |
CheckId |
CA2217 |
<strong>Categoria</strong> |
Microsoft.Usage |
Alteração significativa |
Não separável |
Causa
Uma enumeração visível externamente é marcada com FlagsAttribute e tiver um ou mais valores que não são potências de dois, ou uma combinação de outro os valores definidos na enumeração.
Descrição da regra
Uma enumeração deve ter FlagsAttribute apresentar somente se cada valor definido na enumeração é uma potência de dois, ou uma combinação de valores de definidos.
Como corrigir violações
Para corrigir uma violação desta regra, remova FlagsAttribute da enumeração.
Quando suprimir avisos
Não suprimir um aviso da regra.
Exemplo
O exemplo a seguir mostra uma enumeração, cor, que contém o valor 3, que é nem uma potência de dois, nem uma combinação de qualquer um dos valores definidos.A enumeração de cor não deve ser marcada com o 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
};
}
O exemplo a seguir mostra uma enumeração, dias, que satisfaz os requisitos para sendo marcada com 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
};
}
Regras relacionadas
CA1027: Marcar enums com FlagsAttribute