C# 怎么将枚举类型转换为字符串_C# 枚举转字符串方法详解

来源:这里教程网 时间:2026-02-21 17:29:10 作者:

在 C# 中,将枚举类型转换为字符串是一个常见操作。通常用于日志记录、用户界面显示或数据序列化等场景。实现方式简单直接,下面介绍几种常用方法。

1. 使用 ToString() 方法

最常用的方式是调用枚举值的 ToString() 方法,它会返回该枚举成员的名称字符串。

定义一个枚举:

enum Color { Red, Green, Blue }

将其转换为字符串:

Color myColor = Color.Red;
string colorName = myColor.ToString(); // 结果是 "Red"

这是最直观、推荐的做法,适用于大多数情况。

2. 处理带 Description 特性的枚举(自定义文本)

如果希望显示更友好的名称(如中文),可以使用 DescriptionAttribute,然后通过反射获取描述文本。

先引入命名空间:

using System.ComponentModel;

定义带描述的枚举:

[Description("红色")]
public enum Color {
   [Description("红色")]
   Red,
   [Description("绿色")]
   Green,
   [Description("蓝色")]
   Blue
}

编写辅助方法获取描述:

public static string GetDescription(Enum value)
{
   var field = value.GetType().GetField(value.ToString());
   if (field == null) return value.ToString();
   var attribute = (DescriptionAttribute)Attribute.GetCustomAttribute(
      field, typeof(DescriptionAttribute));
   return attribute?.Description ?? value.ToString();
}

调用示例:
Color c = Color.Red;
string desc = GetDescription(c); // 返回 "红色"

3. 使用 nameof 获取枚举名(编译时确定)

如果你只需要某个枚举成员的名称字符串,并且在编译时已知,可以用 nameof

string name = nameof(Color.Red); // 得到 "Red"

这种方式不涉及运行时计算,性能好,但仅限于常量场景,不能用于变量。

4. 直接转换枚举类型名为字符串(较少用)

若想获取枚举类型的名称(不是值),可使用:

string typeName = typeof(Color).Name; // 得到 "Color"

这和枚举值转字符串无关,注意区分用途。

基本上就这些。日常开发中,ToString() 足够应对多数需求。需要显示中文或说明性文字时,结合 DescriptionAttribute 是标准做法。不复杂但容易忽略细节。

相关推荐