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