Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
| Propiedad | Valor |
|---|---|
| Identificador de la regla | CA2248 |
| Título | Proporcionar el argumento enum correcto para Enum.HasFlag |
| Categoría | Uso |
| La corrección interrumpe o no interrumpe | Sin interrupción |
| Habilitado de forma predeterminada en .NET 10 | Como sugerencia |
| Idiomas aplicables | C# y Visual Basic |
Causa
El tipo de enumeración que se pasa como argumento a la llamada del método HasFlag es diferente del tipo de enumeración esperado.
Descripción de la regla
El método Enum.HasFlag espera que el argumento enum sea del mismo tipo enum que la instancia en la que se invoca el método. Si son tipos diferentes enum , se producirá una excepción no controlada en tiempo de ejecución.
Cómo corregir infracciones
Para corregir los errores, use el mismo tipo de enumeración tanto en el argumento como en la función que llama.
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
}
}
Cuándo suprimir las advertencias
No suprima las infracciones de esta regla.