zoukankan      html  css  js  c++  java
  • C#-------------枚举

    声明一个枚举:

        public enum Week
        {
            one = 1,
            two = 2,
            three
        }

    反编译

    我们可以看到,我们创建的枚举自动继承自System.Enum,那么Enum又是怎么样的呢?

    可以看到Enum是一个抽象类,它继承自ValueType但它又不是一个值类型,所以它有点特殊

    那么枚举中到底可以有哪些类型呢?

     通过查看源代码我们看到了一个ValuesAndNames这个类,所以说,只要是不大于ulong的整数都可以作为值

     既然我们知道了怎么声明,接下来就是如何使用了以及转换

    掌握了上面的基本也就掌握了枚举,当然如果你先判断一个值是否在枚举中,列举枚举的值该怎么办呢?

      这时候我们就需要Enum类来帮助我们了

      判断一个值是否在枚举中

            static void Main(string[] args)
            {
                Console.WriteLine(Enum.IsDefined(typeof(Week),1));//true
    
                Console.Read();
            }

      列举值:

                foreach (var item in Enum.GetNames(typeof(Week)))
                {
                    Console.WriteLine(item);
                }

        当然上面的枚举有时不够用怎么办,假如我有一个颜色的枚举,红,黄,白假如红和黄混合就是红黄色0-0,那么我们是否需要在建立一个枚举值呢?

      答案可以是需要,也可以不需要,我们可以使用位枚举

        [Flags]
        public enum Week
        {
            hong = 0x1,
            huang = 0x10
        }
            static void Main(string[] args)
            {
                Week w = Week.hong | Week.huang;
                Console.WriteLine(w.ToString());
                Console.Read();
            }

    那如果要判断一个值是否在枚举中呢?

                Week w = Week.hong | Week.huang;
                Console.WriteLine((w&Week.hong)!=0);

    Hold on, everything is possible.
  • 相关阅读:
    单选框radio 选择问题
    用户名、密码等15个常用的js正则表达式
    mysql创建远程用户并授权
    JS,Jquery获取屏幕的宽度和高度
    ThinkPHP模版时间显示
    composer启用国内镜像网站的配置更改办法
    tp6 使用全局中间件配置验证器
    tp3.2查询当前时间大于已有时间三分钟
    jquery判断手机端或者pc端
    html页面引入公共的页首和导航栏
  • 原文地址:https://www.cnblogs.com/student-note/p/6825134.html
Copyright © 2011-2022 走看看