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.
  • 相关阅读:
    遂宁2017届零诊16题(仅想说明网传答案的不正确)
    当参变分离遇见洛必达
    高考数学九大超纲内容(1)wffc
    给王志红老师构造的函数,想说明搜题软件的解答过程的不严谨!
    记住路径名
    php返回文件路径
    两个字符串合并为一个字符串的各种方法
    global作用域
    二进制字符串的比较
    var_dump — 打印变量的相关信息
  • 原文地址:https://www.cnblogs.com/student-note/p/6825134.html
Copyright © 2011-2022 走看看