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.
  • 相关阅读:
    JavaSE 基础 第51节 定义自己的异常
    JavaSE 基础 第50节 Java中的异常链
    JavaSE 基础 第49节 手动抛出异常
    JavaSE 基础 第48节 Java中的异常声明
    JavaSE 基础 第47节 获取异常信息
    JavaSE 基础 第46节 异常的分类
    JavaSE 基础 第45节Java异常快速入门
    JavaSE 基础 第44节 引用外部类的对象
    JavaSE 基础 第43节 静态内部类
    通用爬虫
  • 原文地址:https://www.cnblogs.com/student-note/p/6825134.html
Copyright © 2011-2022 走看看