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

Vlastnost Hodnota
ID pravidla CA2248
Název Poskytněte prosím do Enum.HasFlag správný argument enum
Kategorie Využití
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 Jako návrh

Příčina

Typ výčtu předaný jako argument volání HasFlag metody se liší od typu volání výčtu.

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, vyvolá se neošetřená výjimka za běhu.

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 run time

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

Kdy potlačit upozornění

Nepotlačujte porušení tohoto pravidla.