不能将类型'System.Enum'转换为int?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (38)

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

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

EnumInterpreter是在创建父类时传入的Func <Enum,string>。

如果EnumInterpreter发回一个空字符串,我想用enumVal的实际值抛出一个异常。我认为我只能将其转换为int

提问于
用户回答回答于

不,你不能将它转换为int,因为System.Enum不是enum,它只是enum的基类。

你可以得到如下的值:

int intVar = (int)enuYourEnum.GetType().GetField("value__").GetValue(objYourEnum);
用户回答回答于

System.Enum不能直接转换为Integer,但它明确实现了IConvertible:

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

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券