2016-07-20 140 views
-1

是什么C#标志VS样品枚举

[Flags] 
    public enum AnswerFlags 
    { 
    A = (1 << 2), 
    B = (1 << 1), 
    C = (1 << 0) 
    } 

public enum AnswerFlags 
     { 
     A = 4, 
     B = 2, 
     C = 1 
     } 

,我为什么要与位而不是整数的工作有什么区别?

+0

复制的问题与硬件端口和寄存器时这里http://stackoverflow.com/a/8480/3856907 – Erik

+0

位往往是有用的。在极其紧凑的表示比代码的清晰度更重要的情况下,它们也可能有用。 –

+0

这个问题可以为你解答:http://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c?rq=1 –

回答

1

标志和经典枚举之间的核心区别是 枚举仅保持一个值:A或B或C 而 标志是为了保持值集:A或B或C或AB或AC或BC或ABC。

你可能想在这里读到它: MSDN