Compartilhar via


CA2217: não marcar enums com FlagsAttribute

TypeName

DoNotMarkEnumsWithFlags

CheckId

CA2217

Categoria

Microsoft.Usage

Alteração Significativa

Sem Quebra

Causa

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

Descrição da Regra

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

Como Corrigir Violações

Para corrigir uma violação desta regra, remova FlagsAttribute da enumeração.

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

O exemplo a seguir mostra uma enumeração, color, que contém o valor 3, que não é uma potência de dois, ou uma combinação de qualquer um dos valores definidos.A enumeração de cores não deve ser marcada com 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 atenda aos requisitos para ser marcado com o 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    
    };
}

Regras Relacionadas

CA1027: marcar enums com FlagsAttribute

Consulte também

Referência

FlagsAttribute