Switch和Enum的那点事儿

    技术2022-05-19  19

    类之间传递参数调用方法时,当参数不同是,可以考虑用枚举做参数,被调用类中用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)