¿Qué significa el atributo [Flags] para las enumeraciones (enum) en C#?
¡Hola, colegas! Estoy aprendiendo C# y me topé con el atributo [Flags] antes de la declaración de un enum. Leí varios artículos, pero no terminé de entender para qué sirve.
Aquí hay un ejemplo que encontré:
```csharp
[Flags]
public enum Days
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
```
Entiendo que los valores están dados como potencias de dos (1, 2, 4, 8...), pero no comprendo:
1. ¿Qué hace exactamente el atributo [Flags]? Sin él, el código también compila.
2. ¿Cómo combinar valores correctamente? Intenté escribir `Days weekend = Days.Saturday | Days.Sunday;`, pero no estoy seguro de que sea correcto.
3. ¿Cómo verificar luego si un día específico está en esa combinación? Por ejemplo, ¿si Saturday está en la variable weekend?
4. ¿Es obligatorio asignar valores como potencias de dos? ¿Se puede hacer simplemente 0, 1, 2, 3, 4?
Explíquenme, por favor, con ejemplos sencillos. ¡Gracias de antemano!
<<>>