2011-11-27 8 views
10

Veo Enum.GetValues devuelve la base Array tipo y Enum.GetNames devuelve una matriz string. Pero no entiendo cómo esto es muy significativo. Para un enum de todos modos, los valores son cadenas.Diferencia entre Enum.GetValues ​​y Enum.GetNames

Pero, hay un problema asociado. El DataGridViewComboBox databinds de columna a enum si le doy el DataSource = Enum.GetValues, pero no databind cuando le doy Enum.GetNames como DataSource.

Respuesta

12

GetValues devolverá una matriz de los valores subyacentes para cada elemento en el Enum.

GetNames devolverá una matriz de cadenas de los nombres para los elementos en la enumeración.

La matriz devuelta por GetValues ​​implementa IList mientras que la cadena [] devuelta por GetNames no lo hace, lo que explica las diferencias de enlace.

+0

fresco. Ahora lo entiendo. Gracias competente_tech! –

14

Las enumeraciones son en realidad numéricas. GetNames devuelve los nombres de los campos. GetValues devuelve los valores numéricos.

MSDN tiene una gran muestra en GetValues.

11

Piense en las enumeraciones como pares Nombre/Valor.

enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 }; 

En el ejemplo anterior, se GetNames() devolver una matriz que contiene los elementos string "Negativo", "cero", y "positivo". GetValues() devolverá un array int contiene -1, 0 y 1.


No es un ejemplo de nombres Enum unión a un menú desplegable en un DataGridView aquí: Create drop down list options from enum in a DataGridView