Avatar ·

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! <<>>

O que o atributo faz