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 łamiąca lub nienaruszająca Niezgodność
Domyślnie włączone na platformie .NET 10 Jako sugestia
Zastosowane języki C# i Visual Basic

Przyczyna

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

Opis reguły

Metoda Enum.HasFlag oczekuje, że argument enum będzie tego samego typu enum co instancja, na której metoda jest wywoływana. 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 runtime

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

Kiedy pomijać ostrzeżenia

Nie ignoruj ani nie ukrywaj naruszeń tej reguły.