代码改变世界

C#中的枚举值

2010-08-02 17:15  Jeff Chow  阅读(1974)  评论(0)    收藏  举报

  项目中,一同事定义了个枚举,而我在根据此枚举做判断的时候,出了一些逻辑性的错误。导致错误的原因是C#中对枚举值的自增、不唯一的问题,然后通过实际的代码,测试了枚举的一些特性。

 

1.枚举名可以是中文。枚举的类名必须跟其他类的类名命名规则一样,而枚举的名字可以是中文,但是不能相同。

可以定义下面这样的枚举。

public enum Weekdays
{
    星期一,
    星期二,
    星期三,
    星期四,
    星期五
}

 

但下面这样的定义是不允许的。

public enum Letter
{
    A,
    A,
    C,
    D,
    E
}

编译器会给出这样的提示:类型“Letter”已经包含“A”的定义。

 

2.枚举值可以相同。

可以定义下面这样的枚举。

public enum Letter
{
    A = 1,
    a = 1,
    B = 2,
    b = 2,
    C,
    D,
    E
}

 

3.枚举的默认值。

在不写明枚举值的情况下,其值为上一枚举值加1,若其为第一个则从0开始。

比如说枚举:

public enum Letter
{
    A,
    B,
    C = -3,
    D,
    E
}
各枚举值为:A = 0,B = 1,C = -3,D = -2,E = -1。

 

4.遍历枚举。

Array letterArray = Enum.GetValues(typeof(Letter));

foreach (Letter item in letterArray)
{
    Console.Write(item.ToString() + " = " + Convert.ToInt32(item).ToString() + ", ");
}