C#中枚举的[Flags]属性是什么意思?
大家好!我正在学习C#,遇到了在enum声明前的[Flags]属性。我读了几篇文章,但还是不太明白它的用途。
下面是我找到的一个例子:
```csharp
[Flags]
public enum Days
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
```
我理解这些值被设置为2的幂(1, 2, 4, 8...),但我不明白:
1. [Flags]属性到底做了什么?没有它,代码也能编译。
2. 如何正确组合这些值?我试过写`Days weekend = Days.Saturday | Days.Sunday;`,但不确定是否正确。
3. 之后如何检查某个特定日是否包含在这样的组合中?例如,变量weekend中是否包含Saturday?
4. 是否必须将值设置为2的幂?可以简单地设为0, 1, 2, 3, 4吗?
请用简单的例子解释一下。提前谢谢!
<<>>