在你定义一个枚举类型时,虽然你没有写XXX : Enum
{
     
}但是编译生成的 XXX 类型其实是从 SystemEnum 类型继承的自定义类型。接下来事情就很容易解释了。你看看 System.Enum 的 ToString() 方法的代码就明白了。

解决方案 »

  1.   

    嗯对了还有一点,这是 Enum 的特点。当你写Enum ABC
    {
        红色,
        黄色
    }的时候,编译器实际将“红色、黄色”作为两个变量,并且声明此变量的声明类型为 ABC。变量“红色”的值为0(类型为ABC),而变量“黄色”的值为1(类型为ABC)。
      

  2.   

    最后我们需要给你讨论一下你所谓的“为什么输出.....”这个说法。实际上任何东西输出,都要通过一定平台的输出语句。而高级的平台的输出语句就会调用相应变量的相应操作(例如装箱操作),就不说“必须跟最低级的字节一致”。就算是你声明一个 int 类型的变量,你可以看看 int 类型的 ToString() 方法的源代码,看看你自己能不能想到需要那样去调用windows sdk级别的格式化方法才能输出一个 int 呢?而绝不一个 int 的简单字节的低级的输出。
      

  3.   

    你说黄色、红色是两个变量,并且类型为ABC。而书上说:“枚举成员是具有整数类型的符号常量”,从书上的这句话来理解的话,黄色、红色是符号常量,而且类型为INT,请问是书上说的不严谨吗还是咋的?