Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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.