Enum.GetValues和Enum.GetNames之间的区别

我看到Enum.GetValues返回基类型类型, Enum.GetNames返回一个string数组。 但我不明白这是多么重要。 无论如何,对于enum ,值是字符串。

但是,存在一个相关的问题。 如果我给出DataSource = Enum.GetValuesDataGridView ComboBox列数据绑定到enum ,但是当我将它作为DataSource提供给Enum.GetNames时,它不会数据绑定。

GetValues将返回Enum中每个项的基础值Array。

GetNames将返回枚举中项目的名称字符串数组。

GetValues返回的数组实现IList,而GetNames返回的字符串[]则不实现IList,这解释了绑定差异。

枚举实际上是数字的。 GetNames返回字段名称。 GetValues返回数值。

MSDN在GetValues上有很好的示例。

将枚举视为名称/值对。

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

在上面的示例中, GetNames()将返回包含“Negative”,“Zero”和“Positive”项的string数组。 GetValues()将返回一个包含SignMagnitude.NegativeSignMagnitude.ZeroSignMagnitude.One


这里有一个将Enum名称绑定到DataGridView中的下拉列表的示例: 从DataGridView中的枚举创建下拉列表选项