C# 枚举

枚举是用户定义的整数类型 。 创建枚举可以节省的大量的时间,减少许多麻烦。 使用枚举比使用无格式的整数至少有

如下2个优势:

  • 如上所述, 枚举可以使代码更易于维护, 有助于确保给变量指定合法的、期望的值
  • 枚举使代码更清晰, 允许用描述性的名称表示整数值, 而不是用含义模糊、变化多端的数来表示。
// 注意看这个枚举定义的位置(它的位置决定了它的作用域)

public enum TimeOfDay
{
    Morning   = 0,
    Afternoon = 1,
    Evening   2
}

class MyClass
{
    static void Main()
    {
        WriteGreeting(TimeOfDay.Morning);
    }

    static void WriteGreeting(TimeOfDay timeOfDay)
    {
        swhitch(timeOfDay)
        {
            case TimeOfDay.Morning:
                Console.WriteLine("Good Morning");
                break;
            case TimeOfDay.Afternoon:
                Console.WriteLine("Good Afternoon");
                break;
            case TimeOfDay.Evening:
                Console.WriteLine("Good Evening");
                break;
            default:
                Console.WriteLine("Hello!");
                break;
        }
    }
}

在c#中, 枚举的真正强大之处是它们在后台会实例化为派生自基类 System.Enum 的结构。 这表示可以对他们调用方法,执行有用的任务。 注意因为 .Net Framework 的实现方式, 在语法上把枚举当成结构不会造成性能损失。 实际上,一旦代码编译好,枚举就称为基本类型, 与 int 和 float 类似。

还可以检索枚举的字符串表示,例如使用前面的 TimeOfDay 枚举:

TimeOfDay time = TimeOfDay.Afternoon;

Console.WriteLine( time.ToString() );

枚举还有一个骚操作, 可以从字符串中获取枚举值:

TimeOfDay time = (TimeOfDay) Enum.Parse( typeof(TimeOfDay) , "afternoon", true);

Console.WriteLine( (int)time );

这段代码说明了如何从字符串中获取枚举值, 并将其转换为整数。 要从字符串转换,需要使用静态的 Enum.Parse() 方法,

这个方法有3个参数。

  1. 要使用的枚举类型
  2. 要转换的字符串
  3. 指定在进行转换时是否忽略大小写。 

注意: Enum.Parse() 方法实际上返回一个对象引用 ---- 我们需要把这个字符串显式转换为需要的枚举类型(这是一个拆箱操作的例子)。 对于上面的代码, 将返回1, 作为一个对象,应对与 TimeOfDay.Afternoon 的枚举值。在显式转换为 int时, 会再次生成1

System.Enum 上的其他方法可以返回枚举定义中,值的个数或列出值的名称等。 详细信息参见 MSDN文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值