Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何决定哪个枚举值作为返回值?有规则吗?_C#_.net_Enums - Fatal编程技术网

C#如何决定哪个枚举值作为返回值?有规则吗?

C#如何决定哪个枚举值作为返回值?有规则吗?,c#,.net,enums,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=

我发现了一件非常有趣的事情——比如说:

 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”,为什么?来自:

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

相关的:

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

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

相关:和@TimSchmelter为什么你会找到重复的链接,然后再发布一个答案?@Rawling:因为我认为它们只是相关的(至少第一个链接不是重复的)。我还发现了答案中没有提到的文档。@TimSchmelter在这种情况下,你为什么建议将其作为副本?@ths:是的,但你必须知道
Console.WriteLine(ma)
使用
Enum.ToString
,你必须知道这是文档化的,不幸的是,通常不是这样。如果是这么简单,我想知道为什么相关(甚至重复)问题的答案没有提到MSDN。