C#的枚举小技巧

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);
}
发布了26 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_37920739/article/details/103647063