CA2217: No marcar enumeraciones con FlagsAttribute
Nombre de tipo |
DoNotMarkEnumsWithFlags |
Identificador de comprobación |
CA2217 |
Categoría |
Microsoft.Usage |
Cambio problemático |
No |
Motivo
Una enumeración visible externamente está marcada con FlagsAttribute y tiene uno o varios valores que no son potencias de dos o una combinación de los otros valores definidos en la enumeración.
Descripción de la regla
Una enumeración debe tener un atributo FlagsAttribute presente sólo si cada valor definido en la enumeración es una potencia de dos o una combinación de valores definidos.
Cómo corregir infracciones
Para corregir una infracción de esta regla, quite FlagsAttribute de la enumeración.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
En el ejemplo siguiente se muestra una enumeración, Color, que contiene el valor 3, que no es una potencia de dos ni una combinación de ninguno de los valores definidos.La enumeración Color no debe marcarse con 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
};
}
En el ejemplo siguiente se muestra una enumeración, Days, que cumple los requisitos necesarios para que pueda marcarse con 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
};
}
Reglas relacionadas
CA1027: Marcar enumeraciones con FlagsAttribute