C# 如何将字符串强制转换为枚举
我有以下代码:C# 如何将字符串强制转换为枚举,c#,.net,string,enums,C#,.net,String,Enums,我有以下代码: public string GetSetting(string setting) { return db2.ExecuteScalar<string>("SELECT VALUE FROM Setting WHERE SettingType = ?", setting); } public enum NOA { All = 0, Five = 5, Seven = 7, Nine = 9, Ten = 10 } pub
public string GetSetting(string setting)
{
return db2.ExecuteScalar<string>("SELECT VALUE FROM Setting WHERE SettingType = ?", setting);
}
public enum NOA
{
All = 0,
Five = 5,
Seven = 7,
Nine = 9,
Ten = 10
}
public static partial class Extensions
{
public static string Text(this NOA noa)
{
switch (noa)
{
case NOA.Ten: return "10";
case NOA.Five: return "5";
case NOA.Seven: return "7";
case NOA.Nine: return "9";
}
return "";
}
}
当我尝试这个的时候。我收到一个错误,提示“无法将类型字符串转换为日语。NOA:
NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers");
有人能告诉我如何获取值并将其放入noa中吗?似乎您是从指定的方法中以字符串的形式获取输出。并且您希望将其转换为枚举,这里更好的选项是TryParse,它可以如下所示使用:
NOA noa;
bool conversionResult = Enum.TryParse(App.DB.GetSetting("NumberOfAnswers"), out noa);
通过执行这一行,您将在
conversionResult
中获得一个布尔值,如果它的true表示转换成功,如果它的false表示转换失败,那么这次您将在NOA
中获得NOA
的默认值,让App.DB.GetSetting(“NumberOfAnswers”)返回值
be“10”
则noa
的值将为Ten
,conversionResult
将为true
首先将值解析为枚举类型,然后将其转换为整数
var result = result.Text(Enum.Parse(typeof(NOA),App.DB.GetSetting("NumberOfAnswers")));
不走运-我完全可以控制设置中的内容,所以您也可以给出一个不包括检查的建议。谢谢。对不起,可能我不太清楚。我希望在右边有一个调用GetSettings的东西,并将值作为noa的一种类型输入noa。Thanks@Alan:更新了答案。
var result = result.Text(Enum.Parse(typeof(NOA),App.DB.GetSetting("NumberOfAnswers")));