gpt4 book ai didi

c# - 如何通过枚举名称和值名称获取未知枚举的值?

转载 作者:可可西里 更新时间:2023-11-01 03:04:48 24 4
gpt4 key购买 nike

很抱歉问这个问题,但我没有找到适合这个任务的解决方案:

我有一个名为“myEnum”的枚举(函数不知道 MyEnum)我需要获取 myEnum 的 Value 的 int 值

例子:
程序员将其枚举命名为“myEnum”:

 public enum myEnum
{
foo = 1,
bar = 2,
}

我的函数应该执行以下操作: 通过字符串获取“myEnum”的“foo”的值

函数应由以下人员打开:

 public int GetValueOf(string EnumName, string EnumConst)
{

}

所以当程序员 A 打开它时:

 int a = GetValueOf("myEnum","foo");

它应该返回 1

当程序员 B 有一个名为“mySpace”的枚举时,想要返回值为 5 的“bar”

int a = GetValueOf("mySpace","bar")

应该返回 5

我该怎么做?

最佳答案

您可以使用 Enum.Parse为此,您需要 Enum 类型的完全限定类型名称,即:"SomeNamespace.myEnum":

public static int GetValueOf(string enumName, string enumConst)
{
Type enumType = Type.GetType(enumName);
if (enumType == null)
{
throw new ArgumentException("Specified enum type could not be found", "enumName");
}

object value = Enum.Parse(enumType, enumConst);
return Convert.ToInt32(value);
}

另请注意,这使用 Convert.ToInt32 而不是强制转换。这将处理具有非 Int32 基础类型的枚举值。这仍然会抛出 OverflowException,但是,如果您的枚举具有 Int32 范围之外的基础值(即:如果它是一个 ulong,因为值是 >>int.MaxValue).

关于c# - 如何通过枚举名称和值名称获取未知枚举的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270238/

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