2012-02-07 22 views

Respuesta

5

No hay nada de malo con el código que ha publicado. Esto es absolutamente bien:

[Flags] 
public enum MyEnum 
{ 
    None = 0, 
    IsStarred = 1, 
    IsDone = 128 
} 

Y así es la siguiente:

[Flags] 
public enum MyEnum 
{ 
    IsStarred = 1, 
    IsDone = 128 
    None = 0, 
    SomethingElse = 4, 
} 

Sólo recuerde que el FlagsAttribute no hace cumplir sus valores para ser máscaras de bits.

+0

De hecho, no hay nada que le impida asignar un valor enum indefinido (como un entero) a una variable enum. – Oded

+0

Y todavía puede realizar operaciones de bits en ellos no hay problema, ¿verdad? –

7

No hay nada que requiera que sean secuenciales.

Su definición de enum es correcta y se compilará sin problemas.

La cuestión de la legibilidad y el principio de la menor sorpresa, sin embargo, se han comprometido en gran medida ...

4

No existe el requisito. Lo que tienes está bien, suponiendo que capitalices [Flags].

3

Sí, puedes hacer eso. Tu decides.

4

No tienen que ser secuenciales.

1

No, no tienen que ser secuenciales. Compile su código y véalo usted mismo

1

No sólo se puede hacer eso, pero también se puede hacer esto:

public enum MyEnum 
{ 
    None, 
    IsStarred, 
    IsDone = 128 
} 

o

public enum MyEnum 
{ 
    None = 5, 
    IsStarred, 
    IsDone = 128 
} 

Aquí hay un enlace a más ejemplos: http://www.dotnetperls.com/enum

Cuestiones relacionadas