C#在enum中数字与字符串的的对换
时间: 2024-05-16 13:18:25 浏览: 161
在C#中,可以使用枚举类型来定义一组具有固定值的常量。针对枚举类型中数字与字符串的对换,可以使用以下两种方法:
1. 使用Enum.Parse()和Enum.ToString()方法
这种方法可以将枚举类型中的数字转换为字符串,或将字符串转换为枚举类型中的数字。示例代码如下:
```csharp
enum Colors
{
Red = 1,
Green = 2,
Blue = 3
}
// 将数字转换为字符串
int colorNumber = 2;
string colorString = Enum.GetName(typeof(Colors), colorNumber); // "Green"
// 将字符串转换为数字
string colorString = "Blue";
Colors colorNumber = (Colors)Enum.Parse(typeof(Colors), colorString); // Colors.Blue
```
2. 使用Description属性和反射机制
这种方法需要使用System.ComponentModel命名空间中的Description特性,以及反射机制获取枚举类型中的Description属性值。示例代码如下:
```csharp
using System.ComponentModel;
using System.Reflection;
enum Colors
{
[Description("红色")]
Red = 1,
[Description("绿色")]
Green = 2,
[Description("蓝色")]
Blue = 3
}
// 将数字转换为字符串
int colorNumber = 2;
Colors color = (Colors)colorNumber;
string colorString = color.GetType()
.GetMember(color.ToString())
.FirstOrDefault()
?.GetCustomAttribute<DescriptionAttribute>()
?.Description; // "绿色"
// 将字符串转换为数字
string colorString = "蓝色";
Colors colorNumber = Enum.GetValues(typeof(Colors))
.Cast<Colors>()
.FirstOrDefault(c => c.GetType()
.GetMember(c.ToString())
.FirstOrDefault()
?.GetCustomAttribute<DescriptionAttribute>()
?.Description == colorString); // Colors.Blue
```
注意:第二种方法需要在枚举类型中为每个常量定义Description特性,并且Description特性的值应与对应的字符串相同。
阅读全文