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

时间:2014-09-26 09:08:56

标签: c# .net enums

我发现了一件非常有趣的事情 - 让我们说:

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

结果是 a ,为什么?

如果我说:

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

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

1 个答案:

答案 0 :(得分:13)

来自Enum.ToString

  

如果多个枚举成员具有相同的基础值而您   尝试检索枚举的字符串表示形式   会员的名字基于其基础价值,您的代码不应该   关于该方法将返回的名称的任何假设。例如,   以下枚举定义了两个成员,Shade.Gray和   Shade.Grey,具有相同的潜在价值。

相关:enum.ToString return wrong value?

因此,如果您想依赖名称,我会指定唯一值:

enum Myenum { hello = 1, world = 2, qiang = 3 }