Megosztás a következőn keresztül:


CA2217: Ne jelölje meg a számokat a FlagsAttribute használatával

Tulajdonság Érték
Szabályazonosító CA2217
Cím Ne jelölje meg a számokat a FlagsAttribute használatával
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

Az enumerálást a rendszer megjelöli FlagsAttribute , és egy vagy több olyan értékkel rendelkezik, amely nem két vagy a többi definiált érték kombinációja az enumerálásban.

Alapértelmezés szerint ez a szabály csak külsőleg látható enumerálásokat tekint meg, de ez konfigurálható.

Szabály leírása

Az enumerálásnak csak akkor lehet FlagsAttribute jelen, ha az enumerálásban definiált értékek két vagy több meghatározott érték kombinációjának hatványai.

Szabálysértések kijavítása

A szabály megsértésének kijavításához távolítsa el FlagsAttribute az enumerálásból.

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa el a szabály figyelmeztetését.

Kód konfigurálása elemzéshez

A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.

Ezt a beállítást konfigurálhatja csak erre a szabályra, az összes szabályra, vagy az ebben a kategóriában (Használat) érvényes összes szabályra. További információ: Kódminőségi szabály konfigurációs beállításai.

Adott API-felületek belefoglalása

A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Példák

Az alábbi kód egy számbavételt jelenít meg, Coloramely a 3 értéket tartalmazza. A 3 nem két vagy a definiált értékek kombinációja. Az Color enumerálást nem szabad megjelölni a következővel FlagsAttribute: .

// Violates this rule    
[FlagsAttribute]
public enum Color
{
    None = 0,
    Red = 1,
    Orange = 3,
    Yellow = 4
}
Imports System

Namespace Samples

    ' Violates this rule    
    <FlagsAttribute()> _
    Public Enum Color

        None = 0
        Red = 1
        Orange = 3
        Yellow = 4

    End Enum
End Namespace

Az alábbi kód egy enumerálást jelenít meg, Daysamely megfelel a következőkkel FlagsAttributevaló megjelölés követelményeinek:

[FlagsAttribute]
public enum Days
{
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    All = Monday | Tuesday | Wednesday | Thursday | Friday
}
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

CA1027: Számjelek megjelölése FlagsAttribute használatával

Kapcsolódó információk