2010-04-16 16 views

Respuesta

4

Lógicamente None podría ser una opción válida (depende del significado de su enumeración) -> podría tener una rama separada en una caja de conmutación (discutible - no siempre una opción None hace SENCE)

En cuanto a tener un None opción una variable Nullable<Mode>: me gustaría obtener None por consistencia: si tiene 3 opciones válidas y None es una de ellas, ¿por qué tratarlo de manera diferente?

Y si elige o no tiene una opción None, siempre debe tener un valor enum mapeado como 0 (la opción predeterminada). El link proporcionada por Hans Kesting hace un buen punto de tener un valor asignado como 0:

El valor por defecto de una enumeración no inicializado, al igual que otros tipos de valores, es cero. Una enumeración no atribuida a banderas debe definir un miembro con el valor de cero, de modo que el valor predeterminado sea un valor válido de la enumeración. Si corresponde, nombre el miembro 'Ninguno'. De lo contrario, asigne cero al miembro más comúnmente utilizado. Tenga en cuenta que si el valor del primer miembro de enumeración no está establecido en la declaración, su valor es cero por defecto.

+0

Marqué su respuesta como útil. –

11

Ninguna es importante para [Flags] enumeraciones, y debe tener el valor 0. De lo contrario ... cuestionable. Un Nullable<Mode> también sería suficiente. Pero None puede exigirse para su serialización o capas ORM (puede correlacionarse con una cadena esperada/int-value, etc.). O podría simplemente hacer que la API sea más simple.

4

Es requerido por una regla de Análisis de Código, ver http://msdn.microsoft.com/en-us/library/ms182149(VS.100).aspx por la razón oficial.

+0

(re non-flags enumeraciones) pah ... si "0" no es ya un caso válido para mi enumeración, no estoy teniendo uno. Verificaré los valores válidos yo mismo, ta. Necesito comprobar ** cada otro ** valor que no está definido: ¿por qué 0 debe ser diferente simplemente porque es el valor predeterminado? 1124521 es * solo * como inválido (presumiblemente). –

Cuestiones relacionadas