您的位置:首页 > 编程语言 > C#

C#指南,重温基础,展望远方!(10)C#枚举

2018-05-30 10:37 316 查看

枚举类型是包含一组已命名常量的独特值类型 需要定义包含一组离散值的类型时,可以定义枚举。 枚举使用一种整型值类型作为其基础存储, 并提供离散值的语义含义。

以下示例声明并使用名为“

Color
”的 
enum
 类型,其中包含三个常量值(
Red
Green
 和 
Blue
)。

C#复制
using System;
enum Color
{
Red,
Green,
Blue
}
class EnumExample
{
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);
}
}

每个 

enum
 类型都有对应的整型类型(称为 
enum
 类型的基础类型)
。 如果 
enum
 类型未显式声明基础类型,则基础类型为 
int
。 
enum
 类型的存储格式和可取值范围由基础类型决定。 
enum
 类型需要使用的一组值不受其 
enum
 成员限制。 尤其是,基础类型的 
enum
 的任何值都可以显式转换成 
enum
 类型,并作为 
enum
 类型的不同有效值。

以下示例声明基础类型为 

sbyte
 且名为“
Alignment
”的 
enum
 类型。

C#复制
enum Alignment: sbyte
{
Left = -1,
Center = 0,
Right = 1
}

如上面的示例所示,

enum
 成员声明可以包含用于指定成员值的常数表达式。 每个 
enum
 成员的常量值都必须介于 
enum
 的基础类型范围内。 如果 
enum
 成员声明未显式指定值,那么会为成员指定值 0(如果是 
enum
 类型中的首个成员)或原文前一个 
enum
 成员的值加 1。

可使用类型显式转换功能将 

Enum
 值转换成整型值,反之亦然。 例如:

C#复制
int i = (int)Color.Blue;    // int i = 2;
Color c = (Color)2;         // Color c = Color.Blue;

任何 

enum
 类型的默认值都是已转换成 
enum
 类型的整型值 0。 
如果变量被自动初始化为默认值,这就是为 
enum
 类型的变量指定的值。 
为了让 
enum
 类型的默认值可供方便使用,文本类型 
0
 隐式转换成任意 
enum
 类型
。 因此,可以运行以下命令。

C#复制
Color c = 0;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: