C# string 转枚举
在C#中将字符串(string)转换为枚举(enum)类型,主要有以下几种方法实现:
1. 基础转换方法
Enum.Parse方法
直接解析字符串为枚举值,若字符串无效会抛出异常:
enum Color { Red, Green, Blue }
string colorStr = "Green";
Color color = (Color)Enum.Parse(typeof(Color), colorStr);
需配合try-catch处理异常。
Enum.TryParse方法(推荐)
安全转换,避免异常,通过返回值判断是否成功:
if (Enum.TryParse("Blue", out Color result)) {Console.WriteLine(result); // 输出: Blue
}
支持忽略大小写(第三个参数设为true)。
2. 扩展方法封装
通过泛型扩展简化调用:
public static T ToEnum<T>(this string value, T defaultValue) where T : struct {if (string.IsNullOrEmpty(value)) return defaultValue;return Enum.TryParse(value, true, out T result) ? result : defaultValue;
}
使用时直接调用"Red".ToEnum(Color.Black)。
3. 注意事项
大小写敏感:默认区分大小写,可通过ignoreCase参数控制。
值检查:转换前建议用Enum.IsDefined验证字符串是否为有效枚举值。
性能:频繁调用时TryParse优于Parse+异常捕获6。
4. 完整示例
以下代码演示安全转换及默认值处理:
enum Status { Active, Inactive, Pending }
string input = "Active";
// 安全转换
if (Enum.TryParse(input, out Status status)) {Console.WriteLine($"状态: {status}");
} else {Console.WriteLine("无效状态");
}// 带默认值的扩展方法调用
Status defaultStatus = input.ToEnum(Status.Pending);