首页 > 其他 > 详细

9.枚举

时间:2020-05-02 00:40:22      阅读:67      评论:0      收藏:0      [点我收藏+]

语法

[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();

        }
    }
}

运行结果:
技术分享图片

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

9.枚举

原文:https://www.cnblogs.com/lz32158/p/12815361.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!