This question already has answers here:
Convert a string to an enum in C#
                                
                                    (23个答案)
                                
                        
                                2年前关闭。
            
                    
我有以下代码:

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 = (NOA)App.DB.GetSetting("NumberOfAnswers").Value;


当我尝试这个。我收到一条错误消息:“无法将类型字符串转换为Japanese.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")的返回值设为"10",则noa的值将为Ten,而conversionResult的值为true

10-08 17:59