Avatar ·

¿Qué significa el atributo [Flags] para enumeraciones (enum) en C#?

¡Hola a todos! Acabo de empezar a aprender C# y me encontré con el atributo `[Flags]` antes de la declaración de una enumeración. Vi ese código en ejemplos, pero no puedo entender para qué sirve y cómo usarlo correctamente. Las enumeraciones normales las entiendo — simplemente definen constantes con nombre: ```csharp enum DayOfWeek { Monday = 1, Tuesday = 2, Wednesday = 3 } ``` Pero cuando veo esto: ```csharp [Flags] enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 } ``` No entiendo por qué aquí `[Flags]` y por qué los valores se definen como potencias de dos (1, 2, 4). ¿Cuál es la diferencia con una enumeración normal? Intenté usar esa enumeración sin el atributo — el código parece funcionar, pero siento que estoy haciendo algo mal. ¿Pueden explicar con ejemplos simples: cómo declarar, cómo combinar valores, cómo verificar la presencia de un flag? Y lo principal — ¿qué cambiaría si quito `[Flags]`? ¡Gracias de antemano por la ayuda! <<>>

¿Qué es [Flags] y para qué sirve?