C#枚举类型enum是一种特殊的数据类型,它可以用来定义一组常量,这些常量可以用来表示特定的值。枚举是一种强大的工具,可以让你在代码中使用有意义的名字来表示数字常量。
使用enum声明一个枚举变量,语法如下:
enum 枚举名 { 成员1, 成员2, ... }
例如,我们可以声明一个名为Weekdays的枚举,它包含7天中的7个成员:
enum Weekdays { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }
默认情况下,Sunday将被分配0、Monday将被分配1、Tuesday将被分配2、依此类推。但是我们也可以手动分配值。例如,我们可以将Sunday分配100、Monday分配101、Tuesday分配102、依此类推。语法如下所示:
enum Weekdays { Sunday = 100, Monday = 101, Tuesday = 102, Wednesday = 103, Thursday = 104, Friday = 105, Saturday = 106 }
当我们使用Weekdays时,就会遇到有意义的名字而不是数字常量。这样就能够减少出错的机会并使代码更加易读。例如,我们可以使用Weekdays.Monday而不是101来表示星期一。
枚举是一种特殊的值类型,是指定的数字常量组。
例如:
public enum Direction { Left, Right, Top, Bottom }
我们可以使用这个枚举类型如下:
Direction topSide = Direction.Top; bool isTop = (topSide == Direction.Top); // true
每个枚举成员都有一个基本的整数值。
默认情况下,底层值的类型为int。
将以枚举成员的声明顺序自动分配常量0,1,2 ...。
我们可以指定一个替代整数类型,如下:
public enum Direction : byte { Left, Right, Top, Bottom }
我们还可以为每个枚举成员指定明确的底层值:
public enum Direction : byte { Left=1, Right=2, Top=10, Bottom=11 }
编译器还允许我们显式地分配一些枚举成员。
未赋值的枚举成员保持从最后一个显式值开始递增。
上述示例等效于以下内容:
public enum Direction : byte { Left=1, Right, Top=10, Bottom }
我们可以使用显式转换将枚举实例转换为其基础整数值:
int i = (int) Direction.Left; Direction side = (Direction) i; bool leftOrRight = (int) side <= 2;
数字文字0由编译器在枚举表达式中特别处理,不需要显式转换:
Direction b = 0; // No cast required if (b == 0) ...
枚举的第一个成员通常用作“默认”值。
对于组合枚举类型,0表示“无标志”。
我们可以结合枚举成员。
为了防止歧义,可组合枚举的成员需要明确赋值,通常为2的幂。
例如:
[Flags] public enum Directions { None=0, Left=1, Right=2, Top=4, Bottom=8 }
要使用组合枚举值,我们使用位运算符,例如|和&
它们对基本整数值进行操作:
Directions leftRight = Directions.Left | Directions.Right; if ((leftRight & Directions.Left) != 0) { Console.WriteLine ("Includes Left"); // Includes Left } string formatted = leftRight.ToString(); // "Left, Right" Directions s = Directions.Left; s |= Directions.Right; Console.WriteLine (s == leftRight); // True s ^= Directions.Right; // Toggles Directions.Right Console.WriteLine (s); // Left
按照惯例,当其成员可组合时,Flags属性应该始终应用于枚举类型。
为方便起见,您可以在枚举声明中包含组合成员:
[Flags] public enum Directions { None=0, Left=1, Right=2, Top=4, Bottom=8, LeftRight = Left | Right, TopBottom = Top | Bottom, All = LeftRight | TopBottom }
使用枚举的运算符有:
= == != < > <= >= + -^ & | ? += -= ++ -- sizeof
按位,算术和比较运算符返回处理基本整数值的结果。
允许在枚举和整数类型之间添加,但不允许在两个枚举之间添加。
C#条件运算符和||运算符测试与和或条件。!运算符表示不。以下代码使用and,not和or运算符创建布尔表达式。!cloudy(WeekDay || ...
C# if switchif语句语法对于使用过程语言进行任何编程的任何人都应该是非常直观的:if (condition)statement(s) elsestatement(s...
C# 预处理器指令预处理器指令为编译器提供有关代码区域的附加信息。最常见的预处理器指令是条件指令。例子:#define DEBUGclass ...