gpt4 book ai didi

c# - .NET 3.5 中 Enum.TryParse 的实现

转载 作者:太空狗 更新时间:2023-10-29 19:50:44 29 4
gpt4 key购买 nike

如何在 .NET 3.5 中实现 .NET 4 的 Enum.TryParse 方法?

public static bool TryParse<TEnum>(string value, out TEnum result) where TEnum : struct

最佳答案

我不喜欢使用 try-catch 来处理任何转换失败或其他非异常事件作为我应用程序正常流程的一部分,所以我自己的 Enum.TryParse .NET 3.5 及更早版本的方法使用 Enum.IsDefined() 方法来确保 Enum.Parse() 不会抛出异常。您还可以在 value 上包含一些 null 检查,以防止在 value 为 null 时出现 ArgumentNullException

public static bool TryParse<TEnum>(string value, out TEnum result)
where TEnum : struct, IConvertible
{
var retValue = value == null ?
false :
Enum.IsDefined(typeof(TEnum), value);
result = retValue ?
(TEnum)Enum.Parse(typeof(TEnum), value) :
default(TEnum);
return retValue;
}

显然,此方法不会驻留在 Enum 类中,因此您需要一个合适的类来包含此方法。

一个限制是缺少对泛型方法的 enum 约束,因此您必须考虑要如何处理不正确的类型。如果 TEnum 不是 enumEnum.IsDefined 将抛出 ArgumentException 但唯一的其他选项是运行时检查并抛出一个不同的异常,所以我通常不添加额外的检查,只是让这些方法中的类型检查为我处理。我会考虑添加 IConvertible 作为另一个约束,只是为了帮助进一步约束类型。

关于c# - .NET 3.5 中 Enum.TryParse 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017151/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com