首页 >后端开发 >C++ >如何将字符串转换为C#中的枚举?

如何将字符串转换为C#中的枚举?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-02-02 00:41:18726浏览

How to Convert a String to an Enum in C#?

在 C# 中将字符串转换为枚举

从字符串解析枚举

当处理包含枚举值的 HTML select 标签时,需要将选定的字符串值转换为相应的枚举值。在 C# 中,首选的转换方法是 Enum.TryParse

<code class="language-csharp">Enum.TryParse("Active", out StatusEnum myStatus);</code>

对于 .NET Core 和 .NET Framework 4.0 之前的版本,需要更长的语法:

<code class="language-csharp">StatusEnum myStatus = (StatusEnum)Enum.Parse(typeof(StatusEnum), "Active", true);</code>

自定义枚举解析扩展方法

为了方便起见,您可以创建自定义扩展方法来简化解析过程,例如:

<code class="language-csharp">public static T ParseEnum<T>(string value) => (T)Enum.Parse(typeof(T), value, true);</code>

此扩展方法允许您编写:

<code class="language-csharp">StatusEnum myStatus = ParseEnum<StatusEnum>("Active");</code>

处理无效的枚举值

为了处理字符串值不是有效枚举值的情况,您可以向 ParseEnum 方法添加默认值:

<code class="language-csharp">public static T ToEnum<T>(string value, T defaultValue)
{
    if (string.IsNullOrEmpty(value)) return defaultValue;
    T result;
    return Enum.TryParse<T>(value, true, out result) ? result : defaultValue;
}</code>

这允许您使用以下语法:

<code class="language-csharp">StatusEnum myStatus = "Active".ToEnum(StatusEnum.None);</code>

以上是如何将字符串转换为C#中的枚举?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn