Puntualidad
ENUMERACIONES FLOGS
Nos dice que modificadores de operaciones de bits & y | se puede tratar de objetos tipo enumerados, a estas enumeraciones se les llamara enumeraciones flogs.
Estees un ejemplo de una de estas enumeraciones
enum ModiArc
{
Lectura = 1,
Escritura = 2,
Oculto = 4,
Sistema = 8
}
Este es un ejemplo claro de el uso de uno de los operadoresantes mencionados.
ModiArc obj = ModiArc.Lectura | ModiArc.Escritura
Después en el objeto “obj” se guardara el resultado de la operación entre nuestras variables que en este caso es 3. A estosliterales “ModiArc” solo se guardara 1 bit y en este caso para poder guardar el tres tendrá que combinar lo 2 bits de “lectura y Escritura” y debido a esto el objeto indentificara de manera errónea lacombinación de dichas literales. Debido esto no se podrá determinal el valor de la literal a menos de que :
bool permisoLectura = (obj == ModificadorArc.Lectura);// false
Por otro lado si cabias eloperador por & :
bool permisoLectura = ( (obj & ModiArc.Lectura) != 0);//true
De esta forma sera de este modo también 3.
Por otro lado, si alguno de los bits a 1 del valor numérico del objetono tuviese el correspondiente literal con sólo ese bit a 1 en la enumeración no se realizaría tampoco el proceso anterior y se devolvería una cadena con dicho valor numérico.
Algo mas comodo uy quese puede utilizar son las estructuras flags, como por ejemplo:
[Flags]
enum ModificadorArchivo
{
Lectura = 1,
Escritura = 2,
Oculto = 4,
Sistema = 8
}
Entonces lasiguiente llamada producirá como salida Lectura, Escritura:
Console.Write(obj); // Muestra Lectura, Escritura
Esto se debe a que en ausencia del modificador "F", Format() mira dentro de losmetadatos del tipo enumerado al que pertenece el valor numérico a mostrar si éste dispone del atributo Flags. Si es así funciona como si se le hubiese pasado "F".
También cabe destacar que, para crear...
Regístrate para leer el documento completo.