• 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.
  • 相关阅读:
    【Mysql 8001错误
    【mysql查询今天、昨天、7天、近30天、本月、上一月 数据】
    bootstrap-table 常用总结-1
    前端下载图片
    swiper 轮播中常用的效果,持续更新
    常用的时间函数整理
    拼接字符转的转义
    Ajax跨域请求,设置content
    JS MD5 返回二进制格式
    jqgrid three 树形结构
  • 原文地址:https://www.cnblogs.com/student-note/p/6825134.html
Copyright © 2020-2023  润新知