枚举
枚举是一组命名整型常量。
enum 枚举名字
{
常量1,常量2,
……
常量n
};
枚举的常量是由 , 分隔的列表。并且,在这个整型常量列表中,通常默认第一位枚举符号的值为0,此后的枚举符号的值都比前一位大1。
在将枚举赋值给 int 类型的时候,需要强转为int类型。
示例1——首位枚举符号默认为零
enum Num
{
One,
Two,
Three
};
static void Main()
{
int x = (int)Num.One;
int y = (int)Num.Two;
int z = (int)Num.Three;
Console.WriteLine("One = " + x);
Console.WriteLine("Two = " + y);
Console.WriteLine("Three = " + z);
Console.ReadKey();
}

示例2——枚举符号的值比前一位大1
当对某一项枚举符号赋值以后,枚举符号的值将会发生改变。
enum Num
{
One,
Two = 9,
Three
};
static void Main()
{
int x = (int)Num.One;
int y = (int)Num.Two;
int z = (int)Num.Three;
Console.WriteLine("One = " + x);
Console.WriteLine("Two = " + y);
Console.WriteLine("Three = " + z);
Console.ReadKey();
}

枚举使用
创建枚举变量列表
枚举所有你需要的情况的变量名,尽可能望文生义,用这个变量代替数字,方便一眼看出达到某条件,该执行什么功能。
//枚举游戏状态
enum GameState
{
Menu,
Map
}
定义枚举变量
只有枚举的变量才接收和直接用枚举变量。
public GameState m_State = GameState.Menu; //访问修饰符根据情况而定
使用枚举变量
虽然枚举变量的值是整形,如果用int类型进行接收的话需要强制转换类型。
int x = 0; if(x == (int)GameState.Menu) { 语句块; }
if(m_State == GameState.Menu)
{
语句块;
}
else if(m_State == GameState.Map)
{
语句块;
}
else
{
}
枚举作用域
internal class Menu
{
// 菜单状态
enum MenuState
{
Start,
Setting,
Exit
}
}
这种方式是将枚举MenuState定义为内部类 Menu 的一个嵌套类型。这意味着MenuState枚举是Menu 类的一部分,并且只能在Menu 类内部或同一个程序集中的其他类中被访问。这种用法通常用于将相关联的类型组织在一起,提高代码的封装性和可读性。
// 菜单状态
enum MenuState
{
Start,
Setting,
Exit
}
这种方式是将枚举MenuState定义为一个独立的类型。它可以在整个程序集中被访问,只要它是公开的(默认情况下枚举是公开的)。这种用法适用于那些在多个类中可能会用到的枚举值。
两种写法的主要区别在于它们的作用域和封装性:
- 作用域:内部类中的枚举作用域受限于内部类,而独立的枚举作用域更广。
- 封装性:内部类中的枚举提供了更好的封装性,有助于隐藏实现细节。
2125

被折叠的 条评论
为什么被折叠?



