当前位置:   article > 正文

数据类型——枚举_枚举类型

枚举类型

枚举是什么

在c#中,枚举(enumeration)是一种数据类型,和int、double、string等类型相似。枚举用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。例如一周有周一、周二……周日,则可定义一个枚举类型包括周一……周日七个取值。

枚举的声明

c#中枚举的声明关键字为enum

[public] enum 枚举名
{1,
	值2,
	值3,
	……
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

public:访问修饰符,公共的。可省略
enum:关键字,生命枚举类型
枚举名:符合Pascal明明规范

需要注意,枚举名一般声明在命名空间下面,因为这样可以让命名空间下面的类都可以应用到。
使用枚举时和其他数据类型一样:变量类型 变量名=值
举例子

using System;
namespace demo_1
{
//声明枚举类Week
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
        	//使用枚举 变量类型 变量名=值
            Week week = Week.星期一;
            Console.WriteLine(week);
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

这样就输出了枚举中的“星期一”。

枚举与其他数据类型的转换

与int类型转换

枚举类和int类型时兼容的,可以相互转换。

枚举转int

举例子

using System;
namespace demo_1
{
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine((int)Week.星期一);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

输出0

继续测试

using System;
namespace demo_1
{
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine((int)Week.星期一);
            Console.WriteLine((int)Week.星期二);
            Console.WriteLine((int)Week.星期三);
            Console.WriteLine((int)Week.星期四);
            Console.WriteLine((int)Week.星期五);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

输出在这里插入图片描述
改写枚举中的星期一为星期一=2,继续测试:

using System;
namespace demo_1
{
    public enum Week
    {
        星期一 = 2,//改写了
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine((int)Week.星期一);
            Console.WriteLine((int)Week.星期二);
            Console.WriteLine((int)Week.星期三);
            Console.WriteLine((int)Week.星期四);
            Console.WriteLine((int)Week.星期五);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

输出在这里插入图片描述
总结:枚举类型默认是跟int类型互相兼容的,所以可以通过强制转换的语法互相转换,并且枚举转int时,枚举中的第一个量为0,其余一次递增。若给枚举中的量赋值,则转int时输出为赋给值,其余再次基础上依次递增。当转换一个枚举中没有的值的时候,不会抛异常,会将数字直接显示出来。int转枚举同理
double、float、decmial等同理。

int转枚举

举例子

using System;
namespace demo_1
{
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            int n = 1;
            Console.WriteLine((Week)n);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出星期二

将n改为8,继续测试

using System;
namespace demo_1
{
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            int n = 8;//改为8
            Console.WriteLine((Week)n);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出8

与string类型转换
枚举转字符串

使用ToString()
举例子


using System;
namespace demo_1
{
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            Week week = Week.星期一;
            Console.WriteLine(week.ToString());
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

输出字符串星期一

字符串转枚举

使用Enum.Parse(typeof(枚举名),要转换的字符串)。注意,不存在Convert.ToEnum()
举例子

using System;
namespace demo_1
{
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            string s = "0";
            Week week = (Week)Enum.Parse(typeof(Week), s);
            Console.WriteLine(week);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

输出星期一

令s = “8”,继续测试

using System;
namespace demo_1
{
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            string s = "8";//改成8
            Week week = (Week)Enum.Parse(typeof(Week), s);
            Console.WriteLine(week);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

输出8

将s改为星期一,继续测试

输出星期一

将s改为星期八,继续测试

抛出异常

总结:枚举和string类型不兼容。字符串转枚举时,如果转换字符串是数字,即使枚举中没有该值,也不会抛出异常。如果转换的字符串是文本,如果枚举中没有则会抛出异常。

枚举的意义是什么

  • 提高代码维护性,确保变量合法。
    当一个团队开发一个项目的时候,代码的编写不是一个人的工作,是很多人的工作,即为致命的一点是每个人都有各自的编写习惯,例如定义“周一”的时候,有人会写成星期一,礼拜一等,这样在合成的时候就会很难麻烦。枚举就可以很好的解决这个问题。
  • 提高代码可读性
    使用的时候直接Week.星期一即可。
  • 提高代码键入。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/83162
推荐阅读
相关标签
  

闽ICP备14008679号