gpt4 book ai didi

c# - 如何将枚举泛型类型的变量转换为 int 并返回

转载 作者:行者123 更新时间:2023-12-04 13:09:34 25 4
gpt4 key购买 nike

我正在使用 C# 编写一个采用枚举类型参数的类,如下所示:

class EnumWrapper<T>
where T: Enum
{
}

在类中,我有一个方法接受类型 T 的参数,我需要将它转换为一个 int,如下所示:

void DoSomething(T arg)
{
int a = (int)arg;
}

但是编译器发出 CS0030 错误“无法将类型‘T’转换为‘int’。当我尝试将 int 转换回 T 时会发生类似的事情。但是,这适用于未提供的固定枚举类型通过类型参数。例如,这工作正常:

void DoSomething(DayOfWeek arg)
{
int a = (int)arg;
}

为什么会这样,我如何在通用枚举类型和 int 之间进行转换?

最佳答案

您可以添加 IConvertible通用约束并使用 ToInt32 方法,例如

class EnumWrapper<T>
where T : Enum, IConvertible
{
void DoSomething(T arg)
{
int a = arg.ToInt32(null);
}
}

看看the Enum constraint了解详情。此外,如评论中所述,您的 enum 不必基于 int 类型

关于c# - 如何将枚举泛型类型的变量转换为 int 并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67002329/

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