【C#语言规范版本5.0学习】1.9 枚举

枚举类型 (enum type) 是具有一组命名常量的独特的值类型下面的示例声明并使用一个名为 Color 的 枚举类型,该枚举具有三个常量值 Red、Green 和 Blue。

using System;
enum Color
{
Red,
Green,
Blue
}

class Test
{
static void PrintColor(Color color) {
switch (color) {
case Color.Red:
Console.WriteLine("Red");
break;
case Color.Green:
Console.WriteLine("Green");
break;
case Color.Blue:
Console.WriteLine("Blue");
break;
default:
Console.WriteLine("Unknown color");
break;
}
}
static void Main() {
Color c = Color.Red;
PrintColor(c);
PrintColor(Color.Blue);
}
}
View Code

每个枚举类型都有一个相应的整型类型,称为该枚举类型的基础类型 (underlying type)。没有显式声明基础类型的枚举类型所对应的基础类型是 int。

枚举类型的存储格式和取值范围由其基础类型确定。一个枚举类型的值域不受它的枚举成员限制。具体而言,一个枚举的基础类型的任何一个值都可以被强制转换为该枚举类型,成为该枚举类型的一个独特的有效值。下面的示例声明了一个名为 Alignment、基础类型为 sbyte 的枚举类型。

enum Alignment: sbyte
{
Left = -1,
Center = 0,
Right = 1
}

如前面的示例所示,枚举成员的声明中包含常量表达式,用于指定该成员的值。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。如果枚举成员声明未显式指定一个值,该成员将被赋予值零(如果它是该枚举类型中的第一个值)或前一个枚举成员(按照文本顺序)的值加 1。

可以使用类型强制转换将枚举值转换为整型值,反之亦然。例如

int i = (int)Color.Blue; // int i = 2;
Color c = (Color)2; // Color c = Color.Blue;

 任何枚举类型的默认值都是转换为该枚举类型的整型值零。在变量被自动初始化为默认值的情况下,该默认值就是赋予枚举类型的变量的值。为了便于获得枚举类型的默认值,文本 0 隐式地转换为任何枚举 类型。因此,下面的语句是允许的。

Color c = 0;

posted @ 2021-01-27 15:49  TechSingularity  阅读(74)  评论(0编辑  收藏  举报