• C# 枚举


    一、简介

    枚举是一组命名整型常量;枚举类型是使用 enum 关键字声明的;C# 枚举是值类型。

    二、语法

    枚举的语法:

    public enum 枚举名
    {
       值1,
       值2,
       值3,
      ............
    }
    
    或者
     enum 枚举名
    {
       值1,
       值2,
       值3,
      ............
    }

    public:访问修饰符,公共的公开的,哪都可以访问;

    enum:关键字,声明枚举的关键字;

    枚举名:要符合Pascal命名规范;

    将枚举声明到命名空间下面,类的外面,表示这个命名空间下,所以类都可以访问这个枚举;

    三、类型转换

    我们可以将一个枚举类型的变量跟int类型和string类型互相转换:

    1.枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换,当转换一个枚举中没有的值的时候,不会抛异常,而是直接将数字显示出来。

    2.如果将枚举类型转换成string类型,则直接调用ToString().

    3.如果将字符串转换成枚举类型则需要下面这样一行代码:

    (要转换的枚举类型)Enum.Parse(typeof(要转换的枚举类型),"要转换的字符串");
    

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

    备注:所有的类型都能够转换成string类型,调用ToString()。

    四、实例

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _03枚举的练习
    {
        public enum Sesons
        { 
            春,
            夏,
            秋,
            冬
        }
        public enum QQState
        { 
            OnLine,
            OffLine,
            Leave,
            Busy,
            QMe
        }
        class Program
        {
            static void Main(string[] args)
            {
                Sesons s = Sesons.春;
                QQState state = QQState.OnLine;
    
            }
        }
    }

    五、类型转换实例

    1.将枚举类型强转成int类型

    namespace _04枚举和int以及string类型之间的转换
    {
        public enum QQState
        {
            OnLine=1,
            OffLine,
            Leave,
            Busy,
            QMe
        }
        class Program
        {
            static void Main(string[] args)
            {
                #region 将枚举类型强转成int类型
                QQState state = QQState.OnLine;
                //枚举类型默认可以跟int类型互相转换  枚举类型跟int类型是兼容的
                int n = (int)state;
                Console.WriteLine(n);
                Console.WriteLine((int)QQState.OffLine);
                Console.WriteLine((int)QQState.Leave);
                Console.WriteLine((int)QQState.Busy);
                Console.WriteLine((int)QQState.QMe);
                Console.ReadKey();
                #endregion
    }
    }
    }
    

    2.将int类型强转为枚举类型

    namespace _04枚举和int以及string类型之间的转换
    {
        public enum QQState
        {
            OnLine=1,
            OffLine,
            Leave,
            Busy,
            QMe
        }
        class Program
        {
            static void Main(string[] args)
            {
                  #region 将int类型强转为枚举类型
    
                int n1 = 3;
                QQState state = (QQState)n1;
                Console.WriteLine(state);
                Console.ReadKey();
                #endregion
    }
    }
    }    
    

    3.将枚举类型转换成字符串类型

    amespace _04枚举和int以及string类型之间的转换
    {
        public enum QQState
        {
            OnLine=1,
            OffLine,
            Leave,
            Busy,
            QMe
        }
        class Program
        {
            static void Main(string[] args)
            {
                #region 将枚举类型转换成字符串类型
                //所有的类型都能够转换成string类型
                int n1 = 10;
                // double n1 = 3.14;
                decimal n1 = 5000m;
                string s1= n1.ToString();
                Console.WriteLine(s1);
           
                QQState state = QQState.OnLine;
                string s = state.ToString();
                Console.WriteLine(s);
                Console.ReadKey();
                #endregion
    }
    }
    }    
    

    4.将字符串转换成枚举类型

    amespace _04枚举和int以及string类型之间的转换
    {
        public enum QQState
        {
            OnLine=1,
            OffLine,
            Leave,
            Busy,
            QMe
        }
        class Program
        {
            static void Main(string[] args)
            {
              //枚举练习
                //提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型。
                //再次打印到控制台中
    
                Console.WriteLine("请选择您的qq在线状态 1--OnLine 2--OffLine 3--Leave 4--Busy 5--QMe");
                string input = Console.ReadLine();
                switch (input)
                {
                    case "1": QQState s1 = (QQState)Enum.Parse(typeof(QQState), input);
                        Console.WriteLine("您选择的在线状态是{0}",s1);
                        break;
                    case "2": QQState s2 = (QQState)Enum.Parse(typeof(QQState), input);
                         Console.WriteLine("您选择的在线状态是{0}",s2);
                        break;
                    case "3": QQState s3 = (QQState)Enum.Parse(typeof(QQState), input);
                         Console.WriteLine("您选择的在线状态是{0}",s3);
                        break;
                    case "4": QQState s4 = (QQState)Enum.Parse(typeof(QQState), input);
                        Console.WriteLine("您选择的在线状态是{0}", s4);
                        break;
                    case "5": QQState s5 = (QQState)Enum.Parse(typeof(QQState), input);
                        Console.WriteLine("您选择的在线状态是{0}", s5);
                        break;
                }
                Console.ReadKey();
    }
    }
    }    
    

      

  • 相关阅读:
    js数据类型的转换
    个人总结css中的四种position定位
    c3和js写的切割轮播图 喜欢宋仲基的妹子汉子们来,观看效果需要引入jQuery^^
    立体骰子(css3和js)
    友善串口调试助手
    Pixhawk之调试方法
    深度学习论文笔记:Deep Residual Networks with Dynamically Weighted Wavelet Coefficients for Fault Diagnosis of Planetary Gearboxes
    Sublime Text 插件之常用20个插件
    lll
    浅谈jQuery的对象构成1
  • 原文地址:https://www.cnblogs.com/qy1234/p/11783282.html
Copyright © 2020-2023  润新知