那位大哥能帮我解释一下这两段代码运行的结果为什么不同啊..using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace output
{
    enum Day
    { 
    一,二=2,三=2,四,五
    }
    class Program
    {
        static void Main(string[] args)
        {
            Day d = (Day)2;
            Console.WriteLine(d);
        }
    }
}结果是 “三”。using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace output
{
    enum Day
    { 
    一,二=2,三=2,四
    }
    class Program
    {
        static void Main(string[] args)
        {
            Day d = (Day)2;
            Console.WriteLine(d);
        }
    }
}结果是“二”。
谢谢了!!!

解决方案 »

  1.   

    enum 枚举类型各个子项应该对应不用的值,你这个对应相同的值,这不好说
      

  2.   

    看了下反汇编的IL和机器码。原理是CLR在装箱的时候,会指派一个值等于给定数值的枚举类型。这个过程是CLR决定的,不可控。
      

  3.   

    +1
    enum 枚举类型各个子项应该对应不同的值,
    你有相同的值就由CLR决定了
      

  4.   

    这个实在是没法解释。enum当有相同的值时是由CLR决定的