Switch和Enum的那点事儿

类之间传递参数调用方法时,当参数不同是,可以考虑用枚举做参数,被调用类中用switch……case判断调用
枚举
public enum BindType
{
    alarm,
    phone_location,
    phone_trace,
    machine_room,
    dili,
    machine_room_info,
    site,
    tousu
}
枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
枚举数可以具有重写默认值的初始值设定项。例如:
enum Days {Sat=100, Sun, Mon, Tue, Wed, Thu, Fri};
在此枚举中,强制元素序列从 100 而不是 0 开始。
获取枚举值:int x = (int)Days.Sun;

枚举长整型
enum Range :long {Max = 2147483648L, Min = 255L};
获取枚举值:long x = (long)Range.Max;

枚举也支持string类型,

 string tmp="a";
            switch (tmp)
            {
                case "a":
                    Console.WriteLine("a");
                    if (1 == 1)
                    {
                        Console.WriteLine("1==1");
                    }
                    break;
                case "b":
                    Console.WriteLine("b");
                    break;
            }
msdn上这样写的:
enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常数组成的独特类型。每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。
枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。

enum在调用toString()时,结果为其名词的字符串
如BindType.phone_trace.toString():"phone_trace"

switch配合枚举使用:
 BindType tmpType=BindType.phone_trace;
            switch (tmpType)
            {
                case BindType.phone_trace:                   
                case BindType.alarm:
                    Console.WriteLine("alarm");
                    if (1 == 1)
                    {
                        Console.WriteLine("1==1");
                    }
                    break;
                case BindType.dili:
                    Console.WriteLine("dili");               
                    break;
      default:
                    Console.WriteLine("default");
                    break;
            }
switch语句中可以用枚举实现匹配
switch每个case中可以实现多行语句(可以跟if……else if……一样实现匹配,但效率要高(以前总以为只能处理单行,失误失误)),如BindType.alarm
另外case中有处理时,记得跟break,否则会报错;没有处理语句时,可以不用break,表示跟下面的处理方式相同

使用例子
A类中:
public enum BindType
{
    alarm,
    phone_location,
    phone_trace,
    machine_room,
    dili,
    machine_room_info,
    site,
    tousu
}

B类中使用:
public A.BindType bindType;
bindType=A.BindType.alarm;
console.writeline(bindType.toString())结果为:alarm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值