lunes, 28 de febrero de 2011

Atributo Flags en Enumeradores

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 ;