gpt4 book ai didi

c# - 为什么 Enum.Parse() 返回对象?

转载 作者:可可西里 更新时间:2023-11-01 08:08:23 25 4
gpt4 key购买 nike

这里有很多关于将字符串转换为枚举值的问题。通常,答案看起来类似于 this question 上的答案。 :

StatusEnum MyStatus = (StatusEnum) Enum.Parse( typeof(StatusEnum), "Active", true );

虽然这是一个非常合理的答案,并且您可以编写一个方法来简化调用,但它没有回答为什么 Enum.Parse() 返回object 的问题。而不是适当的枚举值。为什么我必须将它转换为 StatusEnum


编辑:

基本上,问题是为什么像这样的函数不是 Enum 类的一部分?

    public static T Parse<T>(string value) where T: struct 
{
return (T)Enum.Parse(typeof (T), value);
}

此函数运行良好,完全符合您的预期。 StatusEnum e = Enum.Parse<StatusEnum>("Active"); .

最佳答案

它这样做是因为

  1. 它早于泛型并且(即使它没有:)
  2. 通用约束不能是枚举(在主流 .NET 语言中)

因此,Object 是唯一始终适用于任何类型的 enum 的类型。

通过返回对象,API 至少可以正常运行,即使需要强制转换也是如此。

关于c# - 为什么 Enum.Parse() 返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12324883/

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