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

Eve*_*ers 14 .net c#

我看到Enum.GetValues返回基Array类型并Enum.GetNames返回一个string数组.但我不明白这是多么重要.对于enum反正,该值是字符串.

但是,存在一个相关的问题.该DataGridView ComboBox列数据绑定到一个enum如果我给DataSource= Enum.GetValues,但它不是数据绑定当我给它Enum.GetNames作为DataSource.

com*_*ech 20

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

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

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


Dan*_*ite 15

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

MSDN有很好的样本GetValues.

  • 这个答案是错误的。GetValues返回** Enum **值,该值可以转换为数字值(例如示例中的整数),也可以转换为字符串或其他形式。 (3认同)

Rob*_*vey 12

将枚举视为名称/值对.

enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };
Run Code Online (Sandbox Code Playgroud)

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


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