c# - 如何尝试解析枚举值?

标签 c# enums

我想编写一个函数,它可以根据 enum 的可能值验证给定值(作为字符串传递)。在匹配的情况下,它应该返回枚举实例;否则,它应该返回一个默认值。

该函数可能不会在内部使用 try/catch,这排除了使用 Enum.Parse,这会在给定无效参数时抛出异常.

我想使用类似于 TryParse 函数的方式来实现:

public static TEnum ToEnum<TEnum>(this string strEnumValue, TEnum defaultValue)
{
   object enumValue;
   if (!TryParse (typeof (TEnum), strEnumValue, out enumValue))
   {
       return defaultValue;
   }
   return (TEnum) enumValue;
}

最佳答案

Enum.IsDefined 将完成任务。它可能不像 TryParse 那样高效,但它可以在没有异常处理的情况下工作。

public static TEnum ToEnum<TEnum>(this string strEnumValue, TEnum defaultValue)
{
    if (!Enum.IsDefined(typeof(TEnum), strEnumValue))
        return defaultValue;

    return (TEnum)Enum.Parse(typeof(TEnum), strEnumValue);
}

值得注意:一个TryParse方法是在 .NET 4.0 中添加的。

关于c# - 如何尝试解析枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082532/

相关文章:

c# - MySQL插入/更新记录非常慢

c# - 你能像在 .NET 中一样在 javascript 中获取文化信息字符串吗?

ios - 阅读带有标志的电子邮件标题 - Mailcore & swift

c# - 如何在 C# 中做标志

c# - 在另一个项目中引用枚举

c# - MS 出版商自动化

c# - Windows Phone 8.1 Silverlight 应用程序在调试器中启动并立即终止

c# - 全局异常处理 Web Api 2

.net - 从ListBox SelectedItems属性检索枚举

c++ - 使用 ostream 和枚举类型重载 <<