为什么人们总是使用enum值0, 1, 2, 4, 8而不是0, 1, 2, 3, 4?
这与位操作等有关吗?
我真的很感激有关如何正确使用它的小样本片段:)
[Flags]
public enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Delete = 4
}
Run Code Online (Sandbox Code Playgroud) 我写了枚举:
[Flags]
public enum BundleOS {
Win32 = 0,
Win64 = 1,
Mac = 2
}
Run Code Online (Sandbox Code Playgroud)
我需要从字符串解析它,并写入字符串.字符串样本:"Win32|Win64".下一代码返回无效结果:
BundleOS os;
Boolean result = TryParse<BundleOS>("Win32|Win64", out os);
Run Code Online (Sandbox Code Playgroud)
在result变量中我得到了false值.但我需要true,os价值必须BundleOS.Win32|BundleOS.Win64有价值.
如果我这样做:
String x = (BundleOS.Win32|BundleOS.Win64).ToString();
Run Code Online (Sandbox Code Playgroud)
我需要得到这样的价值:"Win32|Win64"但是我得到了"Win64".
存在这些问题的简单解决方案吗?
我有一个非常简单的二元面具.
1 =星期天
2 =星期六
4 =星期五
8 =星期四
16 =周三
32 =星期二
64 =星期一
因此,如果您想要周三,周四和周五的组合,则可获得16 + 8 + 4 = 28
现在我的代码中只有映射的二进制值.将这个值(28)重新映射到星期三,星期四和星期五的最佳方法是什么?
希望得到一些关于如何做到这一点的输入:).
亲切的问候,尼尔斯