我已经实现了下面的枚举:
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。
答案 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
}