zoukankan      html  css  js  c++  java
  • c# 枚举(Enum)

    C#枚举(Enum)小结

    枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。

    C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

    声明 enum 变量

    声明枚举的一般语法:

    enum <enum_name>
    { 
        enumeration list 
    };


    其中,

    • enum_name 指定枚举的类型名称。
    • enumeration list 是一个用逗号分隔的标识符列表。

    枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.例如:

    enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };


    实例
    下面的实例演示了枚举变量的用法:
    
    实例
    using System;
    
    public class EnumTest
    {
        enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
    
        static void Main()
        {
            int x = (int)Day.Sun;
            int y = (int)Day.Fri;
            Console.WriteLine("Sun = {0}", x);
            Console.WriteLine("Fri = {0}", y);
        }
    }
    当上面的代码被编译和执行时,它会产生下列结果:
    
    Sun = 0
    Fri = 5

     一个枚举的关联值或隐式地、或显示地被赋值。如果枚举成员的声明中具有 constant-expression 初始值设定项,则该常量表达式的值(它隐式转换为枚举的基础类型)就是该枚举成员的关联值。如果枚举成员的声明不具有初始值设定项,则它的关联值按下面规则隐式地设置:

      如果枚举成员是在枚举类型中声明的第一个枚举成员,则它的关联值为零。否则,枚举成员的关联值是通过将前一个枚举成员(按照文本顺序)的关联值加 1 得到的。这样增加后的值必须在该基础类型可表示的值范围内;否则,会出现编译时错误。有关枚举类型成员关联值赋值案例,参考下例:

    using System;
    
    namespace Test
    {
        public enum Day : uint  //如果不设置数据类型,默认为 int
        { Mon=1,Tue=2,Wed=3,Thu=4,Fri=5,Sat,Sun}
        class EnumType
        {
            public static void Main(string[] args)
            {
                Console.WriteLine(ChooseDay(Day.Sun));
                Console.WriteLine(ChooseDay(Day.Mon));
            }
            static string ChooseDay(Day d)
            {
                string tmp = string.Empty;
                switch (d)
                { 
                    case Day.Mon:
                        tmp = string.Format("你选择一周中的第{0}天(即周一),工作",(uint)d);
                        break;
                    case Day.Tue:
                        tmp = string.Format("你选择一周中的第{0}天(即周二),工作", (uint)d);
                        break;
                    case Day.Wed:
                        tmp = string.Format("你选择一周中的第{0}天(即周三),工作", (uint)d);
                        break;
                    case Day.Thu:
                        tmp = string.Format("你选择一周中的第{0}天(即周四),工作", (uint)d);
                        break;
                    case Day.Fri:
                        tmp = string.Format("你选择一周中的第{0}天(即周五),工作", (uint)d);
                        break;
                    case Day.Sat:
                        tmp = string.Format("你选择一周中的第{0}天(即周六),休息", (uint)d);
                        break;
                    case Day.Sun:
                        tmp = string.Format("你选择一周中的第{0}天(即周日),休息", (uint)d);
                        break;
                    default:
                        tmp = "不合法";
                        break;
                }
                return tmp;
            }
        }
    }
    复制代码
    //Execation Result
    
    你选择一周中的第7天(即周日),休息
    你选择一周中的第1天(即周一),工作
    请按任意键继续. . .

    调用枚举

        public enum CommunicationState
        {
            /// <summary>
            /// 位置状态
            /// </summary>
            Unknown = 0,
            /// <summary>
            /// 等待用户登录
            /// </summary>
            WaitforUser = 1,
            /// <summary>
            /// 等待用户输入密码
            /// </summary>
            WaitforPass = 2,
            /// <summary>
            /// 等待用户指令
            /// </summary>
            WaitforCmd = 3,
            /// <summary>
            /// 接收数据中
            /// </summary>
            Receiving = 4,
            /// <summary>
            /// 断开连接
            /// </summary>
            Disconnected = 5
        }



      private CommunicationState m_ComState = CommunicationState.Unknown;

      this.m_ComState = CommunicationState.WaitforUser;
  • 相关阅读:
    Linux let 命令
    perl hash array 嵌套 push
    Perl CGI编程
    Perl关联数组用法集锦
    关于反射和动态代理
    SpringBoot与web开发
    Springboot与日志
    Spring Boot
    SpringBoot的自动配置原理
    Spring MVC执行流程
  • 原文地址:https://www.cnblogs.com/michellexiaoqi/p/11639601.html
Copyright © 2011-2022 走看看