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

时间:2011-11-27 01:17:18

标签: c# .net

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

但是,存在相关问题。如果我提供DataGridView = ComboBox,则enum DataSource列数据绑定到Enum.GetValues,但是当我提供Enum.GetNames时它不会数据绑定}作为DataSource

3 个答案:

答案 0 :(得分:17)

GetValues将返回Enum中每个项目的基础值数组。

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

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

答案 1 :(得分:14)

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

MSDN在GetValues上提供了很好的示例。

答案 2 :(得分:11)

将枚举视为名称/值对。

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

在上面的示例中,GetNames()将返回包含“Negative”,“Zero”和“Positive”项的string数组。 GetValues()将返回包含SignMagnitudeSignMagnitude.NegativeSignMagnitude.Zero的{​​{1}}数组。


有一个将枚举名称绑定到DataGridView中的下拉列表的示例:Create drop down list options from enum in a DataGridView