CA2248: Specificare l'argomento di enumerazione corretto per Enum.HasFlag

Proprietà valore
ID regola CA2248
Title Specificare l'argomento enum corretto per Enum.HasFlag
Categoria Utilizzo
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 Come suggerimento

Causa

Il tipo di enumerazione passato come argomento alla chiamata al HasFlag metodo è diverso dal tipo di enumerazione chiamante.

Descrizione regola

Il Enum.HasFlag metodo prevede che l'argomento enum sia dello stesso enum tipo dell'istanza in cui viene richiamato il metodo. Se si tratta di tipi diversi enum , verrà generata un'eccezione non gestita in fase di esecuzione.

Come correggere le violazioni

Per correggere le violazioni, usare lo stesso tipo di enumerazione sia per l'argomento che per il chiamante:

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

Quando eliminare gli avvisi

Non eliminare le violazioni da questa regola.