gpt4 book ai didi

c# - 转换为枚举与 Enum.ToObject

转载 作者:太空狗 更新时间:2023-10-29 17:47:45 27 4
gpt4 key购买 nike

我最近看到一个使用这种风格的项目:

(SomeEnum)Enum.ToObject(typeof(SomeEnum), some int)

而不是这种风格:

(SomeEnum)some int

为什么要用前者?这只是风格问题吗?

来自 MSDN:

This conversion method returns a value of type Object. You can then cast it or convert it to an object of type enumType.

https://msdn.microsoft.com/en-us/library/ksbe1e7h(v=vs.110).aspx

在我看来,MSDN 告诉我应该调用 ToObject(),然后我就可以转换了。但我很困惑,因为我知道我可以在不调用该方法的情况下进行转换。 ToObject() 的目的是什么?它完成了哪些简单转换没有完成的任务?

最佳答案

在大多数情况下,简单的转换就足够了。

但有时您只能在运行时获取类型。Enum.ToObject 开始发挥作用了。当您需要动态获取枚举值(或者附加到枚举值的元数据(属性))时,可以使用它。这是一个简单的例子:

enum Color { Red = 1, Green, Blue }
enum Theme { Dark = 1, Light, NotSure }

public static void Main(string[] args)
{
var elements = new[]
{
new { Value = 1, Type = typeof(Color) },
new { Value = 2, Type = typeof(Theme) },
new { Value = 3, Type = typeof(Color) },
new { Value = 1, Type = typeof(Theme) },
new { Value = 2, Type = typeof(Color) },
};

foreach (var element in elements)
{
var enumValue = Enum.ToObject(element.Type, element.Value);
Console.WriteLine($"{element.Type.Name}({element.Value}) = {enumValue}");
}
}

输出是:

Color(1) = Red
Theme(2) = Light
Color(3) = Blue
Theme(1) = Dark
Color(2) = Green

More info on enum casting

关于c# - 转换为枚举与 Enum.ToObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37891724/

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