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 | Fornire l'argomento enum corretto a Enum.HasFlag |
| Categoria | Utilizzo |
| La correzione causa un'interruzione o meno | Non rompente |
| Abilitato per impostazione predefinita in .NET 10 | Come suggerimento |
| Linguaggi applicabili | C# e Visual Basic |
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 sopprimere le violazioni di questa regola.