Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Propiedad | Value |
|---|---|
| Identificador de la regla | CA2248 |
| Título | Proporcionar el argumento enum correcto para Enum.HasFlag |
| Categoría | Uso |
| La corrección es problemática o no problemática | Poco problemático |
| Habilitado de forma predeterminada en .NET 10 | Como sugerencia |
Causa
El tipo de enumeración que se pasa como argumento a la llamada de método HasFlag es diferente del tipo de enumeración que realiza la llamada.
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 las infracciones, use el mismo tipo de enumeración en el argumento y el autor de la llamada:
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.