Aracılığıyla paylaş


CA2217: Numaralandırmaları FlagsAttribute ile işaretlemeyin

TürAdı

DoNotMarkEnumsWithFlags

CheckId

CA2217

Kategori

Microsoft.Usage

Bozan Değişiklik

Bozmayan

Sebep

Dışarıdan görünen FlagsAttribute ile işaretlenmiş bir numaralandırma ve ikinin katı olmayan ya da numaralandırma üzerinde tanımlanan diğer değerlerin bir kombinasyonu olmayan bir ya da daha fazla değer vardır.

Kural Tanımı

Bir numaralandırma, yalnızca numaralandırma içinde tanımlanan her değerin ikinin katı veya tanımlanmış değerlerin bir birleşimi/kombinasyonu olduğu zaman FlagsAttribute bulundurmalıdır.

İhlallerin Düzeltilmesi

Bu kuralın bir ihlalini düzeltmek için numaralandırmadan FlagsAttribute kaldırın.

Uyarılar Ne Zaman Bastırılmalı

Bu kuraldan bir uyarı gizlemeyin.

Örnek

Aşağıdaki örnekte, ne ikinin katı olan ne de tanımlanmış bir değerin kombinasyonu olan 3 değerini içeren bir numaralandırma, Color, gösterilmektedir.Color numaralandırıcısı FlagsAttribute' ile işaretlenmemiş olmalıdır.

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    
    };
}

Aşağıdaki örnekte System.FlagsAttribute ile işaretlenmenin gereksinimlerini karşılayan bir numaralandırma, Days, gösterilmektedir.

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    
    };
}

İlgili Kurallar

CA1027: Numaralandırmaları FlagsAttribute ile işaretle

Ayrıca bkz.

Başvuru

FlagsAttribute