通过字符串获取enum int值

本文关键字:int enum 获取 字符串 | 更新日期: 2023-09-27 18:16:27

我已经实现了下面的enum:

public enum CaseOriginCode
{
    Web = 0,
    Email = 1,
    Telefoon = 2
}

我想通过一个string得到enum int的值。像这样:

public void setCaseOriginCode(string caseOriginCodeParam)
{
    int caseOriginCode = CaseOriginCode.GetEnumByString(caseOriginCodeParam);
    // do something with this integer
}

所以我的输入是字符串输出是int型

还是实现一个带有键值的字典更好?

通过字符串获取enum int值

请尝试使用下面的代码片段。

public void setCaseOriginCode(string CaseOriginCode)
{
    int caseOriginCode = (int)(CaseOriginCode)Enum.Parse(typeof(CaseOriginCode), CaseOriginCode);
}

需要注意的一点是,如果在强制转换之后您得到的是0的结果,那么很可能是因为您没有为enum指定值。

例如:

public enum AcquisitionChannel
{
    Referal,
    SearchEngines,
    SocialMedia
}

public enum AcquisitionChannel
{
    Referral = 1,
    SearchEngines = 2,
    SocialMedia = 3
}

如果我正确理解了这个问题,为什么不使用开关箱呢?

public CaseOriginCode setCaseOriginCode(string caseOriginCodeParam)
{
    switch(caseOriginCodeParam)
    {
        case "Web":
            return CaseOriginCode.Web;
        case "Email":
            return CaseOriginCode.Email;
        case "Telefoon":
            return CaseOriginCode.Telefoon;
        default:
            return default(CaseOriginCode);
    }
}

所以在实践中应该是这样的…

int x = (int)setCaseOriginCode("Web"); // output would be 0
CaseOriginCode y = setCaseOriginCode("Email"); // output would be CaseOriginCode.Email