通过字符串获取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型
还是实现一个带有键值的字典更好?
请尝试使用下面的代码片段。
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