C#初级——枚举

枚举

枚举是一组命名整型常量。

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定义为一个独立的类型。它可以在整个程序集中被访问,只要它是公开的(默认情况下枚举是公开的)。这种用法适用于那些在多个类中可能会用到的枚举值。 

两种写法的主要区别在于它们的作用域封装性

  • 作用域:内部类中的枚举作用域受限于内部类,而独立的枚举作用域更广。
  • 封装性:内部类中的枚举提供了更好的封装性,有助于隐藏实现细节。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值