CA2248: Zadejte správný argument výčtu pro Enum.HasFlag

Vlastnost Hodnota
ID pravidla CA2248
Název Poskytněte prosím do Enum.HasFlag správný argument enum
Kategorie Využití
Oprava, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Jako návrh
Příslušné jazyky C# a Visual Basic

Příčina

Typ výčtu předaný jako argument při volání metody HasFlag se liší od typu výčtu provádějícího volání.

Popis pravidla

Metoda Enum.HasFlag očekává, enum že argument bude stejného enum typu jako instance, na které je vyvolána metoda. Pokud se jedná o různé enum typy, dojde při běhu k neošetřené výjimce.

Jak opravit porušení

Pokud chcete opravit porušení, použijte stejný typ výčtu u argumentu i volajícího:

public class C
{
    [Flags]
    public enum MyEnum { A, B, }

    [Flags]
    public enum OtherEnum { A, }

    public void Method(MyEnum m)
    {
        m.HasFlag(OtherEnum.A); // Enum types are different, this call will cause an `ArgumentException` to be thrown at runtime

        m.HasFlag(MyEnum.A); // Valid call
    }
}

Kdy potlačit upozornění

Nepotlačujte porušení tohoto pravidla.