当前位置: 首页 > news >正文

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);

相关文章:

  • 大量程粗糙度轮廓仪适用于哪些材质和表面?
  • 基于多传感器融合的智能驾驶环境感知系统
  • Unittest框架及自动化测试实现流程
  • Java多线程深度解析:从核心机制到高阶实战
  • 鸿蒙UI开发——Builder与LocalBuilder对比
  • OpenCv高阶(十六)——Fisherface人脸识别
  • bi工具是什么意思?bi工具的主要功能有哪些?
  • 黑马程序员C++2024新版笔记 第4章 函数和结构体
  • 《Effective Java(第三版)》笔记
  • 校平机的原理、应用及发展趋势
  • 全球机加工的市场概况及发展趋势
  • linux系统查看硬盘序列号
  • 在离线 OpenEuler-22.03 服务器上升级 OpenSSH 的完整指南
  • FPGA设计需要学什么?
  • 129.在 Vue3 中使用 OpenLayers 实现点击获取重叠要素信息(支持多 Feature)
  • 数据结构(4)线性表-链表-双链表
  • 阿里云域名 绑定 华为云服务器ip
  • UML 时序图 使用案例
  • 详解 C# 中基于发布-订阅模式的 Messenger 消息传递机制:Messenger.Default.Send/Register
  • [Vue]跨组件传值
  • 国内优秀的设计网站/优化英文
  • 网站建设方案书 下载/东莞关键词优化推广
  • 做网站公众号要多少钱/百度关键词排名突然消失了
  • 南阳医疗网站建设公司/8大营销工具
  • 做外贸的网站有那些/百度热搜关键词排名
  • 重庆忠县网站建设公司哪里有/如何做好网站的推广工作