1.枚举的基本知识点
枚举是什么呢?枚举是一个值类型,包含一组命名的常量,如以下的代码:
public enum Color
{
Red,
Green,
Blue,
}
这里是最简单的定义枚举的方式,没有设置任何的东西,所以默认情况下,enum的类型是int型的,并且是从0开始往下递增地,但是我们可以修改以上说的东西,比如以下代码:
public enum Color:short
{
Red = 1,
Green = 2,
Blue = 3,
}
我们可以强制将数字转换成枚举,将枚举强制转换成数字。
Color tmpC = (Color)2;//数字转换成枚举
short num = (short)Color.Red;//枚举转换成数字
2.一个枚举变量代表多个枚举值
我们还可以使用enum类型把多个选项分配给一个变量,而不仅仅是一个枚举常量。但是有一个特殊要求就是常量的值必须是不同的位,[Flags]属性来设置枚举就有以上说的特性,接下来定义一个代码给大家示范一下:
public enum Color:short
{
Red = 0b1,
Green = 0b10,
Blue = 0b100,
Blue_Green = 0b110,
}
这时Color一个变量就可以代表多个值了,Color tmpC = Color.Red | Color.Green, 去输出tmpC的值,结果是Red,Green,而强制转换出来的数值是0b11,当Color tmpC = Color.Blue | Color.Green,去输出打印的时候,结果是Blue_Green,是不是感觉有点意思,原因是我们已经定义了这个值。
3.枚举的常用方法
使用枚举,类Enum有时非常有助于动态获取枚举类型的信息,枚举提供了办法来解析字符串,获得相应的枚举常数,获得枚举类型的所有名称和值。下面代码使用字符串和Enum.TryParse来获得相应值,具体代码如下:
Color tmpC;
if(Enum.TryParse<Color>("Red",out tmpC))
{
Console.WriteLine($"获得的值{tmpC}");
}
Enum.GetNames方法返回一个包含所有枚举名的字符串数组:
foreach (var tmpC in Enum.GetNames(typeof(Color)))
{
Console.WriteLine(tmpC);
}
Enum.GetValues方法返回一个包含所有枚举名的数值数组:
foreach (var tmpC in Enum.GetValues(typeof(Color)))
{
Console.WriteLine(tmpC);
}