2011-11-27 124 views
10

我看到Enum.GetValues返回基地Array類型和Enum.GetNames返回一個string數組。但我不明白這是如此重要。無論如何,對於enum,這些值是字符串。Enum.GetValues和Enum.GetNames之間的差異

但是,有一個相關的問題。 DataGridViewComboBox列數據綁定到enum如果我給DataSource = Enum.GetValues,但它不會數據綁定,當我給它Enum.GetNames作爲DataSource

回答

12

GetValues將返回Enum中每個項目的基礎值數組。

GetNames將返回枚舉中項目的名稱的字符串數組。

GetValues返回的數組實現IList,而GetNames返回的字符串[]不會,這解釋了綁定的差異。

+0

冷卻。我現在明白了。感謝competent_tech! –

14

枚舉實際上是數字。 GetNames返回字段名稱。 GetValues返回數值。

MSDN在GetValues上有很好的示例。

11

將枚舉看作名稱/值對。

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

在上面的例子,GetNames()將返回一個string陣列包含的項目「負」,「零」和「積極的」。 GetValues()將返回一個int陣列含有-1,0和1


有在這裏一個DataGridView枚舉名稱綁定到一個下拉的例子:Create drop down list options from enum in a DataGridView