Saltar al pie de página
Iron Academy Logo
Aprender C#
Aprender C#

Otras categorías

Eliminación de indicadores en C#

Tim Corey
5m 22s

Trabajar con operaciones binarias en C# puede resultar a veces abrumador, pero entender cómo manipular las banderas de forma eficiente es una habilidad esencial para los desarrolladores. En este artículo, exploraremos el proceso de eliminación de flags en C# tal y como lo explica Tim Corey en su vídeo, "Binary in C#: Removing Flags in 10 Minutes or Less". Tim ofrece un desglose claro de cómo eliminar permisos de un sistema de banderas utilizando operaciones bit a bit. Sumerjámonos en sus explicaciones paso a paso.

Introducción a la eliminación de indicadores

Tim comienza el vídeo continuando su serie sobre la comprensión de las operaciones binarias en C#. En esta duodécima lección, se centra en cómo eliminar banderas de un conjunto de permisos en menos de diez minutos. Conserva el código de la lección anterior, en la que los permisos se asignaban mediante una enumeración. El objetivo de esta sesión es demostrar cómo eliminar un permiso específico del conjunto asignado.

Identificación de la bandera a eliminar

Al principio de la demostración, Tim comenta un escenario en el que es necesario eliminar un permiso, concretamente "Redis", de un conjunto de permisos asignados a un usuario. Explica que los permisos se almacenan en un formato binario en el que cada bit representa un permiso diferente.

El reto consiste en eliminar el permiso "Redis" sin afectar a los demás permisos del conjunto. Tim señala que el tercer bit (suponiendo una indexación basada en cero) representa "Redis" y que es necesario borrarlo.

Uso de operaciones bit a bit para eliminar un indicador

Tim recuerda a los espectadores las máscaras bit a bit y el operador NOT (~). Para eliminar una bandera, aplica el siguiente enfoque:

// Remove the Redis permission from TimPermissions
TimPermissions = TimPermissions & ~SystemPermissions.Redis;
// Remove the Redis permission from TimPermissions
TimPermissions = TimPermissions & ~SystemPermissions.Redis;

Explica cada parte de esta operación:

  • SystemPermissions.Redis proporciona el valor de la bandera para 'Redis'.

  • ~SystemPermissions.Redis invierte los bits, cambiando el bit 'Redis' de 1 a 0 y todos los demás a 1.

  • TimPermissions & ~SystemPermissions.Redis realiza una operación AND bit a bit entre TimPermissions y la máscara invertida, eliminando efectivamente el bit 'Redis' mientras preserva todos los demás.

Este método garantiza que se elimine el permiso objetivo sin modificar involuntariamente el resto de las banderas.

Impresión de los permisos actualizados

Después de aplicar la operación bit a bit, Tim muestra el valor actualizado de TimPermissions. Confirma que el tercer bit, que representaba "Redis", se ha eliminado con éxito. Esto demuestra la corrección del planteamiento.

La forma más corta de eliminar indicadores

A continuación, Tim presenta una versión abreviada de la operación:

// Shorthand operation to remove the Redis permission
TimPermissions &= ~SystemPermissions.Redis;
// Shorthand operation to remove the Redis permission
TimPermissions &= ~SystemPermissions.Redis;

Explica que usar &= es simplemente una manera más concisa de expresar la misma lógica, haciendo el código más limpio mientras mantiene el mismo efecto. Subraya que entender tanto la versión larga como la corta ayuda a comprender cómo funcionan las operaciones bit a bit en C#.

Importancia de entender las operaciones bit a bit

Tim reconoce que trabajar con operaciones binarias y bit a bit puede ser un reto, afirmando: "Sí, trabajar con binario de nuevo te va a quemar el cerebro a veces, y eso está bien" Asegura a los espectadores que dominar estos conceptos requiere tiempo y práctica.

Su consejo es aprender cada operador bit a bit—AND (&), OR (|(), and NOT (~)—individualmente antes de combinarlos en operaciones más complejas. Entender cómo funcionan por separado ayuda a los desarrolladores a comprender cómo interactúan cuando se utilizan juntas.

Por qué es importante esta técnica

Tim hace hincapié en que la eliminación de indicadores mediante operaciones bit a bit no se limita a la gestión de permisos. Proporciona un ejemplo de un escenario de desarrollo de juegos en el que una entidad puede tener múltiples estados almacenados como banderas. Con esta técnica, los desarrolladores pueden activar y desactivar estados de forma eficaz y sin cálculos innecesarios.

También destaca que el uso de operaciones bit a bit ofrece un alto rendimiento en comparación con otros métodos de gestión de múltiples estados. Dado que estas operaciones se ejecutan a nivel binario, son más rápidas y más eficientes en términos de memoria que otros enfoques alternativos, como el mantenimiento de propiedades booleanas independientes.

Reflexiones finales

Tim concluye insistiendo en la importancia de practicar estas operaciones hasta que se conviertan en algo natural. Anima a los espectadores a no limitarse a memorizar la sintaxis, sino a esforzarse por comprender en profundidad por qué funcionan estas técnicas.

"Empieza como una regla y luego se convierte en una comprensión" - Tim Corey

Al trabajar continuamente con estos conceptos, los desarrolladores ganarán confianza en la manipulación de indicadores binarios en C#, lo que les hará más competentes a la hora de escribir código eficiente y mantenible.

Conclusión

Gracias a la explicación clara y estructurada de Tim Corey, hemos aprendido a eliminar indicadores en C# mediante operaciones bit a bit. Su enfoque de desglosar cada paso, demostrando las versiones largas y cortas de la operación, y reforzando la importancia de la práctica hace de esta una lección inestimable para los desarrolladores que trabajan con operaciones binarias.

Si quieres saber más sobre las operaciones binarias en C#, no te pierdas la serie completa de Tim sobre el tema

Hero Worlddot related to Eliminación de indicadores en C#
Hero Affiliate related to Eliminación de indicadores en C#

Gana más compartiendo lo que te gusta

¿Creas contenidos para desarrolladores que trabajan con .NET, C#, Java, Python o Node.js? ¡Convierte tu experiencia en un ingreso extra!

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame