按字符串获取enum int值

时间:2013-06-03 07:27:26

标签: enums

我已经实现了下面的枚举:

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

我想通过字符串获取enum int值。像这样:

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

所以我的输入是一个字符串,我的输出需要是一个int。

或者实现具有键值的字典更好。键将是字符串,将是一个int。

3 个答案:

答案 0 :(得分:9)

请尝试使用以下代码段。

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

如果有任何疑虑,请告诉我。

答案 1 :(得分:0)

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

 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

答案 2 :(得分:0)

要注意的一件事是,如果在转换后获得0的结果,则可能是因为您没有为enum指定值。

例如,更改此:

public enum AcquisitionChannel
{
    Referal,
    SearchEngines,
    SocialMedia
}

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