Que signifie l'attribut [Flags] pour les énumérations (enum) en C# ?
Bonjour à tous ! Je viens de commencer à apprendre C# et je suis tombé sur l'attribut `[Flags]` avant la déclaration d'une énumération. J'ai vu ce code dans des exemples, mais je ne comprends pas à quoi il sert ni comment l'utiliser correctement. \n\nLes énumérations normales, je les comprends — elles définissent simplement des constantes nommées :\n\n```csharp\nenum DayOfWeek\n{\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3\n}\n```\n\nMais quand je vois ceci :\n\n```csharp\n[Flags]\nenum Permissions\n{\n None = 0,\n Read = 1,\n Write = 2,\n Execute = 4\n}\n```\n\nJe ne comprends pas pourquoi `[Flags]` est là et pourquoi les valeurs sont définies comme des puissances de deux (1, 2, 4). Quelle est la différence avec une énumération normale ? J'ai essayé d'utiliser une telle énumération sans l'attribut — le code semble fonctionner, mais j'ai l'impression de faire quelque chose de travers. \n\nPouvez-vous expliquer avec des exemples simples : comment déclarer, comment combiner les valeurs, comment vérifier la présence d'un flag ? Et surtout — qu'est-ce qui change si on enlève `[Flags]` ?\n\nMerci d'avance pour votre aide !\n<<>>\n