Enum之间的区别.GetValues和enum_getnames



我看到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.NegativeSignMagnitude.ZeroSignMagnitude.OneSignMagnitude数组。


这里有一个将Enum名称绑定到DataGridView中的下拉列表的例子:

最新更新