[Flags]
enum Flaggy { None = 0, A=1, B=2, C=4, D=8}
Flaggy test;
bool A, B, C, D;
是被标出的枚举比布尔更有效或者它不是真的重要吗?在cpu方面?
编辑: 是的我知道除了添加.ToString()方法和一些可读性之外,[Flags]实际上并没有做任何事情。那么,这段代码每秒要检查25000次以上,所以即使是微小的增益也是值得的。但是Flags Enum在代码中读起来更好,与之相比,像20个布尔值和.NET 4.0,HasValue()弥补了以前烦人的Flags值检查。但一个方法调用,而不是一个if-check是另一个微型cpu流失。 但是阅读得出的答案如此之快,我猜这是比可读性更好的选择。
如果您遇到性能问题并且您的测试和性能分析显示问题存在,则需要担心这些问题。像这样的微型优化通常不是有利的。 – Oded 2012-02-18 10:15:15
不是名为[Flags]的属性吗? – Fox32 2012-02-18 10:15:22
'A,B,C,D'对于[标志] **不是**正确的 - 需要是A = 1,B = 2,C = 4,D = 8# – 2012-02-18 10:24:40