9

我已经实现了enum以下内容:

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

我想enum int通过 a 获得价值string。像这样的东西:

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

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

还是用键值实现字典更好。键将是字符串,而 将是一个 int。

4

3 回答 3

12

请尝试使用以下代码片段。

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

让我知道是否有任何问题。

于 2013-06-03T07:52:05.177 回答
0

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

例如,改变这个:

public enum AcquisitionChannel
{
    Referal,
    SearchEngines,
    SocialMedia
}

public enum AcquisitionChannel
{
    Referral = 1,
    SearchEngines = 2,
    SocialMedia = 3
}
于 2020-06-25T19:14:09.353 回答
-2

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

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
于 2013-06-03T07:42:07.600 回答