假设我有以下代码:
[Flags]
enum MyFlags
{
None = 0,
A = 1,
B = 2,
C = 4,
D = 8,
E = 16,
// ...
}
当标志的数量变得非常大时,这显然不是最佳的。通过优化,意味着可读,而不是快速或节省内存。
对于组合标志,例如
AB = 3
我们可以很容易地使用
AB = A | B
相反,它更具可读性。
并用于组合所有标志
All = A | B | C | ...
使用会更有利
All = ~None
相反,即使我们没有充分利用所有可用的 32/64 位。
但是常规值呢?
之间
E = 16
E = 0b10000
E = 0x10
E = 1 << 4
或者我没有想到的其他方式,哪种方式最适合大量标志?
或者换句话说,在 C# 中设置标志值的(商定)约定是什么?
让我们假设为了论证,值不会对齐,所以代码可能看起来像这样
None = 0,
Apple = 1,
Banana = 2,
StrangeFruit = Apple | Banana,
Cherry = 4,
Date = 8,
Elderberry = 16,
// ...