Compartilhar via


Não marque enums com FlagsAttribute

TypeName

DoNotMarkEnumsWithFlags

CheckId

CA2217

Category (Categoria)

Microsoft.uso

Quebrando alterar

Não separável

Causa

Uma enumeração visível externamente é marcada com FlagsAttribute e tem um ou mais valores que não são potências de dois ou uma combinação de outros valores definidos na enumeração.

Descrição da regra

Uma enumeração deve ter FlagsAttribute valor presente apenas se cada definido na enumeração é uma potência de dois ou uma combinação dos valores definidos.

Como corrigir violações

Para corrigir uma violação dessa 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 é uma potência de dois nem 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 atende aos requisitos para serem marcadas com sistema.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

Marcar enums com FlagsAttribute

Consulte também

Referência

System.FlagsAttribute