数据类型——枚举

文章目录

      • 枚举是什么
      • 枚举的声明
      • 枚举与其他数据类型的转换
        • 与int类型转换
          • 枚举转int
          • int转枚举
        • 与string类型转换
          • 枚举转字符串
          • 字符串转枚举
      • 枚举的意义是什么

枚举是什么

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

枚举的声明

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

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

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);
        }
    }
}

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

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

与int类型转换

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

枚举转int

举例子

using System;
namespace demo_1
{
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五,
        星期六,
        星期日,
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine((int)Week.星期一);
        }
    }
}

输出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,继续测试:

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.星期五);
        }
    }
}

输出数据类型——枚举_第2张图片
总结:枚举类型默认是跟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);
        }
    }
}

输出星期二

将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);
        }
    }
}

输出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());
        }
    }
}

输出字符串星期一

字符串转枚举

使用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);
        }
    }
}

输出星期一

令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);
        }
    }
}

输出8

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

输出星期一

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

抛出异常

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

枚举的意义是什么

  • 提高代码维护性,确保变量合法。
    当一个团队开发一个项目的时候,代码的编写不是一个人的工作,是很多人的工作,即为致命的一点是每个人都有各自的编写习惯,例如定义“周一”的时候,有人会写成星期一,礼拜一等,这样在合成的时候就会很难麻烦。枚举就可以很好的解决这个问题。
  • 提高代码可读性
    使用的时候直接Week.星期一即可。
  • 提高代码键入。

你可能感兴趣的:(C#,c#,开发语言,后端)