C#如何确定哪个枚举值为返回值?有规矩吗?

xqM*_*vKW 16 .net c# enums

我找到了一个很有趣的东西 - 让我们说:

 enum Myenum { a, b, c= 0 }
    public class Program
    {
        static void Main(string[] args)
        {
            Myenum ma = Myenum.a;
            Console.WriteLine(ma);
        }
    }
Run Code Online (Sandbox Code Playgroud)

其结果就是一个,为什么?

如果我说:

 enum Myenum { a, b=0, c}
    public class Program
    {
        static void Main(string[] args)
        {
            Myenum ma = Myenum.a;
            Console.WriteLine(ma);
        }
    }
Run Code Online (Sandbox Code Playgroud)

结果变成"b",为什么?

Tim*_*ter 13

来自Enum.ToString:

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

相关:enum.ToString返回错误的值?

所以如果你想依赖这个名字,我会分配唯一的值:

enum Myenum { hello = 1, world = 2, qiang = 3 }
Run Code Online (Sandbox Code Playgroud)

  • @ths:是的,但你必须知道`Console.WriteLine(ma)`使用`Enum.ToString`并且你必须知道这是在那里记录的,遗憾的是通常情况并非如此.如果它是如此简单,我想知道为什么相关(甚至重复)问题的答案没有提到MSDN. (7认同)