O que significa o atributo [Flags] para enumerações (enum) em C#?
Olá, colegas! Estou estudando C# e me deparei com o atributo [Flags] antes da declaração de um enum. Li vários artigos, mas não entendi completamente para que ele serve.
Aqui está um exemplo que encontrei:
```csharp
[Flags]
public enum Days
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
```
Eu entendo que os valores são definidos como potências de dois (1, 2, 4, 8...), mas não entendo:
1. O que exatamente o atributo [Flags] faz? Sem ele, o código também compila.
2. Como combinar valores corretamente? Tentei escrever `Days weekend = Days.Saturday | Days.Sunday;`, mas não tenho certeza se está correto.
3. Como verificar depois se um dia específico está presente nessa combinação? Por exemplo, se Saturday está na variável weekend?
4. É obrigatório definir os valores como potências de dois? Posso simplesmente usar 0, 1, 2, 3, 4?
Expliquem, por favor, com exemplos simples. Desde já, obrigado!
<<>>