2011-11-27 19 views
10

Vedo il Enum.GetValues restituisce la base Array tipo e Enum.GetNames restituisce una matrice string. Ma non capisco quanto questo sia molto significativo. Ad ogni modo, per un valore enum, i valori sono stringhe.Differenza tra Enum.GetValues ​​e Enum.GetNames

Tuttavia, c'è un problema associato. Il DataGridViewComboBox database di colonne a un enum se io diamo il DataSource = Enum.GetValues, ma non database quando lo do Enum.GetNames come DataSource.

risposta

12

GetValues restituirà una matrice dei valori sottostanti per ciascun elemento dell'Enum.

GetNames restituirà una serie di stringhe dei nomi per gli elementi nell'enumerazione.

L'array restituito da GetValues ​​implementa IList mentre la stringa [] restituita da GetNames non lo fa, il che spiega le differenze di associazione.

+0

freddo. Lo capisco adesso. Grazie competente_tech! –

14

Le enumerazioni sono in realtà numeriche. GetNames restituisce i nomi dei campi. GetValues restituisce i valori numerici.

MSDN ha un ottimo esempio su GetValues.

11

Pensa alle enumerazioni come coppie nome/valore.

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

Nell'esempio precedente, GetNames() restituirà una matrice contenente gli elementi string "negativo", "zero", e "positivo". GetValues() restituisce un int matrice contenente -1, 0 e 1.


C'è un esempio di legame nomi Enum ad una discesa in un DataGridView qui: Create drop down list options from enum in a DataGridView