zoukankan      html  css  js  c++  java
  • 9.枚举

    语法

    [public] enum 枚举名{
        值1,
        值2,
        值3,
        ...
    }
    

    public:访问修饰符,public权限最高,公共的,哪都可访问
    enum:声明枚举的关键字

    一般将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。
    如下所示:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Demo {
    
        //声明一个枚举Gender
        public enum Gender {
            男,
            女
        }
    
    
        class Program {
            static void Main(string[] args) {
    
    
                Gender gender = Gender.男;
          
    
                Console.WriteLine(gender);
                Console.ReadKey();
    
            }
        }
    }
    
    

    枚举类型和int类型的相互转换

    枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换。

    枚举类型转为int类型

    如下例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Demo {
    
        //声明一个枚举Season
        public enum Season {
            Spring,
            Summer,
            Autumn,
            Winter
        }
    
    
        class Program {
            static void Main(string[] args) { 
    
    
                //枚举类型默认可以和int类型相互转换
                Console.WriteLine((int)Season.Spring);
                Console.WriteLine((int)Season.Summer);
                Console.WriteLine((int)Season.Autumn);
                Console.WriteLine((int)Season.Winter);
                Console.ReadKey();
    
            }
        }
    }
    
    

    运行:

    当将Spring改为2时Spring=2,运行结果如下:

    当将Spring=2Autumn=5时,运行结果如下:

    综上,在枚举中的值转换为int类型时默认是从0开始的,但当给枚举中的某个值赋了int类型的值后,如Spring赋值为2后,其后面的值,在转化为int类型的值时,是从2开始,后面依次加1。

    int类型转为枚举类型

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Demo {
    
        //声明一个枚举Season
        public enum Season {
            Spring,
            Summer,
            Autumn,
            Winter
        }
    
    
        class Program {
            static void Main(string[] args) {
    
    
                //枚举类型默认可以和int类型相互转换
                int number = 2;
                Season season = (Season)number;
    
                int number2 = 7;
                Season season2 = (Season)number2;
    
                Console.WriteLine("season:"+season);
                Console.WriteLine("season2:"+season2);
                Console.ReadKey();
    
            }
        }
    }
    
    

    运行结果:

    当number=2时,转换为枚举的值为Autumn,而当number2=7,输出仍然为7。这是因为7在枚举中没有值相对应,转换不了,所以直接输出原来的数字。

    枚举类型与字符串类型的相互转换

    枚举类型转为字符串类型

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Demo {
    
        //声明一个枚举Season
        public enum Season {
            Spring,
            Summer,
            Autumn,
            Winter
        }
    
    
        class Program {
            static void Main(string[] args) {
    
    
                //所有类型都能调用ToString()转换为string类型
                Season season = Season.Spring;
                string s = season.ToString();
    
                Console.WriteLine(s);  
                Console.ReadKey();
    
            }
        }
    }
    
    

    运行结果:

    字符串类型转化为枚举类型

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Demo {
    
        //声明一个枚举Season
        public enum Season {
            Spring,
            Summer,
            Autumn,
            Winter
        }
    
    
        class Program {
            static void Main(string[] args) {
    
    
                
                string s = "0";
    
                Season season=(Season)Enum.Parse(typeof(Season), s);
    
                Console.WriteLine(season);  
                Console.ReadKey();
    
            }
        }
    }
    
    

    运行结果:

    当转换的字符串是数字时,就算枚举中没有,也不会抛异常,而会直接显示出数字。当转换的字符串是文本时,如果枚举中没有,则会抛出异常。

  • 相关阅读:
    好用的抓取dump的工具-ProcDump
    好用的抓取dump的工具-ProcDump
    使用Windbg调试系统弹出的内存不可读错误
    使用Windbg调试系统弹出的内存不可读错误
    驱动层hook系统函数的时,如何屏蔽掉只读属性?
    Rootkit之SSDT hook(通过CR0)
    Rootkit之SSDT hook(通过CR0)
    #define SYSTEMSERVICE(_func) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_func+1) 这
    华南理工大学“三七互娱杯”程序设计竞赛(重现赛)B HRY and fibonacci
    华南理工大学“三七互娱杯”程序设计竞赛(重现赛)A HRY and codefire
  • 原文地址:https://www.cnblogs.com/lz32158/p/12815361.html
Copyright © 2011-2022 走看看