C# Enum.GetValues和Enum.GetNames之间的差异
我看到C# Enum.GetValues和Enum.GetNames之间的差异,c#,.net,C#,.net,我看到Enum.GetValues返回基Array类型和Enum.GetNames返回一个string数组。但我不明白这有多重要。对于enum无论如何,值都是字符串 但是,有一个相关的问题。如果我给DataSource=enum.GetValues,则DataGridView组合框列数据绑定到enum,但当我给它enum.GetNames作为DataSource枚举时,它不进行数据绑定GetNames返回字段名GetValues返回数值 MSDN上有一个很好的示例。将为枚举中的每个项返回一个基础
Enum.GetValues
返回基Array
类型和Enum.GetNames
返回一个string
数组。但我不明白这有多重要。对于enum
无论如何,值都是字符串
但是,有一个相关的问题。如果我给
DataSource
=enum.GetValues
,则DataGridView
组合框
列数据绑定到enum
,但当我给它enum.GetNames
作为DataSource
枚举时,它不进行数据绑定GetNames
返回字段名GetValues
返回数值
MSDN上有一个很好的示例。将为枚举中的每个项返回一个基础整数值数组
将返回枚举中项目名称的字符串数组
GetValues返回的数组实现了IList,而GetNames返回的字符串[]没有实现IList,这解释了绑定差异。将枚举视为名称/值对
enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };
在上面的示例中,GetNames()
将返回一个字符串
数组,其中包含“负”、“零”和“正”项。GetValues()
将返回一个signmagnity
数组,该数组包含signmagnity.Negative
、signmagnmagnity.Zero
和signmagnmagname.One
这里有一个将枚举名称绑定到DataGridView下拉列表的示例:此答案为false。GetValues返回枚举值,该值可以转换为数值(例如示例中的整数),也可以转换为字符串或其他内容。GetValues,在当前示例中,枚举基于long,值为Uin32.MaxValue+2,则返回为1(表示get 64位参考底图值被截断为32位)请记住
Enum.GetValues
如果您的枚举具有相同值的不同名称,则返回重复的值Enum.GetNames
应该为您提供不同的枚举名称。