今天在网上看到一个面试题就点进去看了下结果被难到了...
题目:
     以下是一些C#中的枚举型的定义,其中错误的用法有()
      A.public enum var1{Mike=100,Nike=102,Jike}
      B.public enum var1{Mike=100,Nike,Jike}
      C.public enum var1{Mike=-1,Nike,Jike}
      D.public enum var1{Mike,Nike,Jike}我想知道的是为什么会选择C

解决方案 »

  1.   

    枚举类型可以被装箱成System.Enum、System.ValueType、System.Object或者System.IConvertible、System.IFormattable、System.IComparable。
    注意:在.NET 1.1上,枚举类型只能被装箱到System.Enum、System.ValueType、System.Object;而在.NET 2.0上,枚举类型还能被装箱到System.Enum所实现的三个接口:System.IConvertible、System.IComparable、System.IFormattable。对应的装箱操作既可以为隐式的也可以是显式的。枚举类型与整数类型有一定的关系。事实上,每一个枚举类型都有与之相对应的整数类型,我们称该整数类型为底层类型(underlying type),默认的情况下使用,.NET使用System.Int32。当然,你可以手动将其指定为其他的整数类型:
    能被指定为枚举的底层类型的只能是如下所列的整数类型:byte, sbyte, short, ushort, int, uint, long, ulong。如果你没有手动指定成员的值的话,从上往下看,各成员的值为:0, 1, 2, ...。说罢了,就是一个非负整数等差数列,其初值为0,步长为1。例如:
     public enum Alignment
      {
          Left,    // 0
          Center,    // 1
          Right    // 2
      }否则被赋值的成员的值就是你所指定的值。当然,无论你是否手动指定枚举成员的值,递增步长都不会变,总是为1。
      

  2.   

    枚举默认的类型应该是int类型,但是-1应该也在这个范围之内啊!除非默认是uint。也没有搞懂哈哈哈!
      

  3.   

    应该可以为负值msdn上的例子
    public enum ArrivalStatus { Late=-1, OnTime=0, Early=1 };来自
    http://msdn.microsoft.com/en-us/library/system.enum.aspx