我看到Enum.GetValues
返回基础Array
类型,Enum.GetNames
返回string
数组。但我不明白这是多么重要。对于enum
,无论如何,值都是字符串。
但是,存在相关问题。如果我提供DataGridView
= ComboBox
,则enum
DataSource
列数据绑定到Enum.GetValues
,但是当我提供Enum.GetNames
时它不会数据绑定}作为DataSource
。
答案 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()
将返回包含SignMagnitude
,SignMagnitude.Negative
和SignMagnitude.Zero
的{{1}}数组。
有一个将枚举名称绑定到DataGridView中的下拉列表的示例:Create drop down list options from enum in a DataGridView