• 枚举


    枚举:

    定义枚举使用到的关键字:enum

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace Test_1
     8 {
    //新建一个名为DataOfDay的枚举类型,该类型具有七个成员
    9 public enum DataOfDay 10 { 11 Monday, // 默认值:0 12 Tuesday, // 默认值:1 13 Wendsday, // 默认值:2 14 Thursday, // 默认值:3 15 Friday=3, // 默认值:4 3 16 Saturday, // 默认值:5 4 17 Sunday // 默认值:6 5 18 } 19 class Program 20 { 21 22 static void Main(string[] args) 23 { 24 //枚举中的成员都有默认值,且会从0依次递增 25 int data = (int)DataOfDay.Friday; 26 Console.WriteLine(data); 27 28 //可以给枚举中的成员赋值,值从该成员开始依次递增 29 int data_1 = (int)DataOfDay.Saturday; 30 Console.WriteLine(data_1); 31 32 Console.ReadKey(); 33 } 34 } 35 }

    创建枚举的优点:

    1.是代码易于维护,因为确保给变量指定合法的、期望的值。

    2.代码清晰,允许用描述性的名称拜师整数值,而不是含义模糊,变化多端的数来表示。

    3.易于键入(通过使用 . 符号)。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace Test_1
     8 {
     9     public enum DataOfDay
    10     {
    11         Monday,   // 默认值:0 
    12         Tuesday,  // 默认值:1
    13         Wendsday, // 默认值:2 
    14         Thursday, // 默认值:3
    15         Friday=3,   // 默认值:4
    16         Saturday, // 默认值:5
    17         Sunday    // 默认值:6 
    18     }
    19     class Program
    20     {
    21         
    22         static void Main(string[] args)
    23         {
    24             //枚举中的成员都有默认值,且会从0依次递增
    25             int data = (int)DataOfDay.Friday;
    26             Console.WriteLine(data);
    27 
    28             //可以给枚举中某个成员赋值,值从该成员开始依次递增
    29             int data_1 = (int)DataOfDay.Saturday;
    30             Console.WriteLine(data_1);
    31 
    32             WritngGreeting(DataOfDay.Saturday);
    33 
    34             
    35             Console.ReadKey();
    36         }
    37 
    38         //使用枚举一般和合适的值传递给方法,并在switch语句中迭代可能的值.
    39         static void WritngGreeting(DataOfDay dataofday)
    40         {
    41             switch (dataofday)
    42             {
    43                 case DataOfDay.Monday:
    44                     Console.WriteLine("Good monday!");
    45                     break;
    46                 case  DataOfDay.Friday:
    47                     Console.WriteLine("Good friday!");
    48                     break;
    49                 case DataOfDay.Saturday:
    50                     Console.WriteLine("Good saturday!");
    51                     break;
    52                 default:
    53                     break;
    54             }
    55         }
    56     }
    57 }

    注意:枚举类型的值类型是除 Char 外的任何整型,所以枚举类型的值是整型值。

    在C#中枚举的真正强大之处使他们在后台会实例化为派生于基类的System.Enum的结构.这表示可以对他们调用方法,执行有用的任务.一旦代码编译好,枚举就成为了基本类型,与int和float类似.

                //使用前面的例子获取枚举的字符串表示
                DataOfDay data_2 = DataOfDay.Saturday;
                Console.WriteLine(data_2);
                //字符串类型转换为整型
                DataOfDay data_3 = (DataOfDay)Enum.Parse(typeof(DataOfDay), "Saturday",true);
                Console.WriteLine((int)data_3);

    字符串类型转化为枚举类型需要用到函数Enum.Parse(),这个方法需要三个参数,
    第一个是要转换的枚举类型,用关键字typeof包起来,
    第二个是要转换的字符串(一定是枚举中有的),
    第三个是否忽略大小写.

    看下例:
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace Test_1
     8 {
     9     public enum Colors
    10     {
    11         blue,
    12         red,
    13         orange,
    14         green,
    15         black
    16     }
    17     class Program
    18     {
    19         
    20         static void Main(string[] args)
    21         {
    22             //enum --> string
    23             Colors c1 = Colors.blue;
    24             string str1 = c1.ToString();
    25 
    26             //string-->Enum
    27             //利用Enum的静态方法Parse()
    28             Colors c2=(Colors)Enum.Parse(typeof(Colors),"red",true);
    29             string str2 = c2.ToString();
    30             Console.WriteLine(str2);
    31             Console.ReadKey();
    32  
    33             //Enum-->int
    34             //直接使用强制转换 
    35             int blue=(int)Colors.blue;
    36 
    37             
    38             Console.ReadKey();
    39         }
    40 
    41         
    42     }
    43 }

    如果要判断某个整型是否定义在枚举中的方法:Enum.IsDefined.

    Enum.Isdefined(typeof(Colors),number)

     
  • 相关阅读:
    『软件介绍』SQLServer2008 基本操作
    PCA的数学原理
    PCA的数学原理
    Oracle数据处理
    UVa 11995
    Unreal Engine 4 C++ 为编辑器中Actor创建自己定义图标
    codecombat之边远地区的森林1-11关及地牢38关代码分享
    初识ecside
    how tomcat works读书笔记 七 日志记录器
    HDU 1754(线段树区间最值)
  • 原文地址:https://www.cnblogs.com/jc-1997/p/6088621.html
Copyright © 2020-2023  润新知