Ответ Рида, конечно, правильный.Я просто подумал, что добавлю интересную мелочь.Во-первых, когда вы внутри перечисления, все члены перечисления находятся в области видимости.Это единственная ситуация в C #, в которой вы можете использовать член перечисления через его неквалифицированное имя!
public enum ApprovalItemState
{
Enqueued = 1,
Approved = 2,
Denied = 4,
Acknowledged = 8,
ApprovalAcknowledged = Approved | Acknowledged,
DenialAcknowledged = Denied | Acknowledged
}
Второй простой момент заключается в том, что компилятор C # фактически допускает арифметику перечислений с участием других перечислений внутри перечисления!
enum E
{
E1
}
enum F
{
F1
}
enum G
{
G1 = E.E1 + F.F1
}
Обычно это вообще не будет законно;вы не можете добавить два разнородных перечисления вместе и не можете присвоить результат.Компилятор ослабляет эти правила в инициализаторе перечисления, так что вы можете делать такие вещи как:
enum MyFlags
{
MyReadOnly = FileFlags.ReadOnly,
...