• c# 之Enum--枚举


    枚举 

    收藏的博文连接

      枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。

      枚举类型(也称为枚举):该类型可以是除 char以外的任何整型(重点)。 枚举元素的默认基础类型为 int.准许使用的枚举类型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。其作用就是规范代码通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。

    事例演示:enum语法

     1 public enum QQState  //枚举成员默认为Int32类型,也可以自己定义.冒号+整数类型除
     2     {
     3         OnLine = 1, //默认从0,也可以指定数值
     4         OffLine,   //数值按递增1的顺序.--2
     5         Leave, //3
     6         Busy,
     7         QMe  //5
     8     };
     9 
    10 //定义QQ在线状态的枚举,
    View Code

    enum、int、string之间的相互转换

     1 //定义枚举变量
     2             QQState enumVariable = QQState.OffLine;
     3 
     4             //枚举转字符串
     5             string enumStringOne = enumVariable.ToString();//效率低,不推荐.==>OffLine
     6             string enumStringTwo = Enum.GetName(typeof(QQState), enumVariable);//推荐==>OffLine  enumVariable也可以换成数值 2
     7 
     8             //枚举转int
     9             int enumValueOne = (int)enumVariable; //==> 2
    10             int enumValueTwo = enumVariable.GetHashCode();//HashCode-哈希代码,枚举成员转换成枚举成员的值.
    11             int enumValueThree = Convert.ToInt32(enumVariable);//==> 2
    12 
    13             //字符串转枚举
    14             QQState enum1 = (QQState)Enum.Parse(typeof(QQState), enumStringOne); //==>OffLine
    15             QQState enum2 = (QQState)Enum.Parse(typeof(QQState), "4"); //枚举成员值加双引号 ==>Busy
    16 
    17             //字符串转值
    18             int num1 = (int)Enum.Parse(typeof(QQState), enumStringOne); //==>2
    19 
    20             //值转枚举
    21             QQState enum2 = (QQState)5; //已知数值和枚举名,求出值所指的枚举值 ==>Qme
    22             QQState enum3 = (QQState)Enum.ToObject(typeof(QQState), 4); //==>Busy
    23 
    24             //值转字符串
    25             string enumStringThree = Enum.GetName(typeof(QQState), enum2);
    View Code


    示例演示如何使用Enum.CompareTo 方法

     1     /// <summary>
     2     /// 记录各种车的车门个数.
     3     /// </summary>
     4     public enum VehicleDoors         //车门
     5     {
     6         Motorbike = 0,              //摩托车
     7         Sportscar = 2,              //跑车
     8         Sedan = 4,                  //轿车
     9         Hatchback = 5                //厢车
    10     };
    11 
    12             //声明枚举类型的变量.
    13             VehicleDoors myVeh = VehicleDoors.Sportscar;
    14             VehicleDoors yourVeh = VehicleDoors.Motorbike;
    15             VehicleDoors otherVeh = VehicleDoors.Sedan;
    16             //该示例显示以下输出:
    17             // Sportscar比Motorbike有更多的门吗?
    18             //是的
    19             //
    20             //Sportscar比Sedan有更多的门吗?
    21             //
    22             
    23             Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, yourVeh);
    24             //Environment.NewLine和 “
    ” 回车换行的作用类似
    25             Console.WriteLine("{0}{1}", myVeh.CompareTo(yourVeh) > 0 ? "Yes" : "No", Environment.NewLine);
    26             Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, otherVeh);
    27             Console.WriteLine("{0}", myVeh.CompareTo(otherVeh) > 0 ? "Yes" : "No");//三目运算符返回"Yes" 还是 "No"
    View Code

     示例演示Enum.Parse、Enum.GetName、Enum.GetName方法

     1 public enum Colors
     2     {
     3         Red,        //红色
     4         Green,      //绿色
     5         Blue,       //蓝色
     6         Yellow      //黄色
     7     };
     8 
     9 
    10     public enum Styles
    11     {
    12         Plaid = 2,          //格纹 
    13         Striped = 4,        //条文
    14         Tartan = 6,         //格子呢绒
    15         Corduroy = 8        //灯芯绒
    16     };
    17 
    18 
    19             string colorName = Enum.GetName(typeof(Colors), 3); //返回string类型,枚举元素名字
    20             Console.WriteLine("颜色枚举的第四个值为 {0}", colorName);
    21 
    22             /*初识foreach循环用于列举出集合中所有的元素
    23              * foreach语句中的表达式由关键字in隔开的两个项组成。in右边的项是集合名
    24              * in左边的项是变量名,用来存放该集合中的每个元素。
    25              * 该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。
    26              * 放到只读变量中去,如果括号中的整个表达式返回值为true,foreach块中的语句就能够执行。
    27              * 一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流程就转入到foreach块后面的执行语句。
    28              */
    29             foreach (var name in Enum.GetNames(typeof(Styles)))
    30            {
    31                Console.WriteLine("样式枚举基数是{0}对应的枚举名字{1}{2}",
    32                (int)Enum.Parse(typeof(Styles),name),name,"
    ");
    33                //Type type = name.GetType();
    34                //Console.WriteLine("我是什么类型{0}", type);
    35            }
    View Code

  • 相关阅读:
    @babel/preset-env 解决Promise被Babel编译成regenerator 运行时错误问题
    Blob ArrayBuffer 和 BinaryString StringView
    TypeScript 的尴尬:模块不如wepback完善
    Node.js(1) http和https模块发送HTTP(S)请求
    axios
    Nest.js 再探 解析HTTP请求
    红楼梦题词
    倾斜摄影
    重新认识TypeScript
    TypeScript 家族
  • 原文地址:https://www.cnblogs.com/tianxuan123/p/7055707.html
Copyright © 2020-2023  润新知