Primero que nada hay que definir que es un Enumerador con banderas; y tenemos que Microsoft lo define como: “Es un tipo de valor que se representa como una secuencia de bits”
Declarando el enumerador con el atributo “Flags” antecediéndolo
En C#
[Flags]
public enum Auto
{
SubCompacto= 1,
Compacto = 2,
Sedan = 4,
Cupe= 8,
CrossOver=16
}
En VB
<Flags()> _
Public Enum Auto
SubCompacto= 1
Compacto = 2
Sedan = 4
Cupe= 8
CrossOver=16
End Enum
Ahora comparamos que dentro de una variable tenga asignado el valor del enumerador
En C#
Auto MyAuto= Auto.Compacto;
if ((MyAuto & Auto.Compacto) == Auto.Compacto)
Esta sentencia “(MyAuto & Auto.Compacto)” quita todos menos Auto.Compacto, y lo evalúa contra el enumerador para saber si lo contiene realmente.
Tambien se tiene un nuevo metodo en .NET 4.0 “HasFlag” whe realiza lo mismo del if mencionado anteriormente
En C#
if ( MyAuto.HasFlag(Auto.Compacto) )Para asignar mas de un valor de bandera a la variable:
Auto MyAuto= Auto.Sedan | Auto.CrossOver ;