gpt4 book ai didi

c# - 无法将类型 'System.Enum' 转换为 int

转载 作者:IT王子 更新时间:2023-10-29 04:21:08 35 4
gpt4 key购买 nike

(好吧,我就在这里揭露我的无知,请温柔点)

背景

我有一个看起来(有点)像这样的方法:

public void AddLink(Enum enumVal)
{
string identifier = m_EnumInterpreter(enumVal);
AddLink(identifier);
}

EnumInterpreter是创建父类时传入的Func

我正在使用枚举,因为在这个级别上它“不关我的事”——我不在乎它是哪个具体的枚举。调用代码仅使用(生成的)枚举来避免使用魔法字符串。

问题

如果 EnumInterpreter 发回一个空字符串,我想用 enumVal 的实际值抛出一个异常。我以为我只能转换为 int,但编译器不会有它。我究竟做错了什么? (请不要说“一切”)。

最佳答案

System.Enum 不能直接转换为 Integer,但它确实明确实现了 IConvertible,这意味着您可以使用以下内容:

public void AddLink(Enum enumVal)
{
string identifier = m_EnumInterpreter(Convert.ToInt32(enumVal));
AddLink(identifier);
}

请记住,如果您的枚举实际上使用的不是整数(例如 float ),您将在转换时丢失非整数数据。或者显然用您正在转换的任何内容替换 Convert 调用(如果已知)

关于c# - 无法将类型 'System.Enum' 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643571/

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