Udostępnij za pośrednictwem


CA2248: Podaj poprawny argument wyliczenia do enum.HasFlag

Właściwości Wartość
Identyfikator reguły CA2248
Tytuł Podaj poprawny argument wyliczenia dla metody Enum.HasFlag
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Jako sugestia

Przyczyna

Typ wyliczenia przekazany jako argument do HasFlag wywołania metody różni się od typu wyliczenia wywołującego.

Opis reguły

Metoda Enum.HasFlag oczekuje enum , że argument ma być tego samego enum typu co wystąpienie, na którym wywoływana jest metoda. Jeśli są to różne enum typy, w czasie wykonywania zostanie zgłoszony nieobsługiwany wyjątek.

Jak naprawić naruszenia

Aby naprawić naruszenia, użyj tego samego typu wyliczenia zarówno dla argumentu, jak i elementu wywołującego:

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

Kiedy pomijać ostrzeżenia

Nie pomijaj naruszeń tej reguły.