Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Proprietà | valore |
|---|---|
| ID regola | CA2248 |
| Title | Specificare l'argomento enum corretto per Enum.HasFlag |
| Categoria | Utilizzo |
| La correzione causa un'interruzione o meno | Non causa un'interruzione |
| Abilitato per impostazione predefinita in .NET 10 | 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 , viene 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 runtime
m.HasFlag(MyEnum.A); // Valid call
}
}
Quando eliminare gli avvisi
Non eliminare le violazioni da questa regola.