[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