使用相同的整数值对C#枚举中的元素进行排序

Sch*_*999 2 .net c#

我有一个简单的枚举:

enum E
{
    FullNameForA = 1,
    A = 1,
    FullNameForB = 2,
    B = 2
}
Run Code Online (Sandbox Code Playgroud)

目标是能够使用不同的字符串值对相同的积分值进行扭曲 - 必须使用FullNameFor*作为默认值.换句话说,用户可以提供EA作为输入,但代码应使用E.FullNameForA进行输出.

似乎默认情况下C#将使用具有相同积分值的元素的字母顺序,这使我的目标更难.是对的吗?任何想法如何克服这个?

Jon*_*eet 6

似乎默认情况下C#将使用具有相同整数值的元素的字母顺序

在什么情况下?当您将值转换回字符串?来自以下文件Enum.ToString:

如果多个枚举成员具有相同的基础值,并且您尝试根据其基础值检索枚举成员名称的字符串表示形式,则您的代码不应对该方法将返回的名称做出任何假设.

(请注意,决定是在BCL中 - 这不是语言决定.)

我建议如果你想为每个值建立一个规范的字符串表示,你创建一个Dictionary<E, string>并参考而不是调用ToString().