Enum.GetValues和Enum.GetNames之间的区别
我看到Enum.GetValues
返回基类型类型, Enum.GetNames
返回一个string
数组。 但我不明白这是多么重要。 无论如何,对于enum
,值是字符串。
但是,存在一个相关的问题。 如果我给出DataSource
= Enum.GetValues
, DataGridView
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.Negative
, SignMagnitude.Zero
和SignMagnitude.One
。
这里有一个将Enum名称绑定到DataGridView中的下拉列表的示例: 从DataGridView中的枚举创建下拉列表选项