我看到Enum.GetValues
返回基础Array
类型,Enum.GetNames
返回string
数组。但我不明白为什么这很重要。无论如何,对于enum
,值都是字符串。
但是,有一个相关的问题。DataGridView
ComboBox
列数据索引到enum
,如果我给DataSource
= Enum.GetValues
,但当我给它Enum.GetNames
作为DataSource
时,它没有数据绑定。
GetValues将返回Enum中每个项的基础整数值的数组。
GetNames将返回一个包含枚举项名称的字符串数组。
GetValues返回的Array实现了IList,而GetNames返回的字符串[]没有实现IList,这就解释了绑定的差异
枚举实际上是数字。GetNames
返回字段名。GetValues
返回数值。
MSDN在GetValues
上有一个很好的例子
将枚举视为名称/值对。
enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };
在上面的例子中,GetNames()
将返回一个包含"Negative"、"Zero"one_answers"Positive"的string
数组。GetValues()
将返回一个包含SignMagnitude.Negative
、SignMagnitude.Zero
和SignMagnitude.One
的SignMagnitude
数组。
这里有一个将Enum名称绑定到DataGridView中的下拉列表的例子: