c#中的字符串转换为Enum

本文关键字:Enum 转换 字符串 | 更新日期: 2023-09-27 18:09:18

我需要将字符串分配给Enum值。我的场景和代码下面

我正在访问一个webservice方法,说addWhere(int i ,int j,Comparison)

其中比较类型为Enum。

我从UI中获取值并将其放在字符串中

string strComparison= "AND"; or
string strComparison= "OR"

我需要将这些值设置为ENUM。我尝试了下面的代码

addWhere(2 ,3,Enum.Parse(typeof(Comparison),strComparison))

但没有工作。解决这个问题的方法是什么或有其他方法吗?

谢谢

c#中的字符串转换为Enum

看起来您缺少返回类型转换,即

(Comparison)Enum.Parse(typeof(Comparison), strComparison);

枚举。解析返回object类型,因为您的addWhere方法期望Comparison类型的值。

必须将Enum.Parse的结果强制转换为正确的类型:

addWhere(2, 3, (Comparison)Enum.Parse(typeof(Comparison), strComparison));

你可以这样做:

Comparison comparison;
if(Comparison.TryParse(strComparison, out comparison))
{
   // Work with the converted Comparison
}

正如之前的帖子所说,你可能会错过类型转换。

enum Comparision
{
        AND,
        OR
}
class Program
{
    static void Main(string[] args)
    {
        Comparision cmp = (Comparision)Enum.Parse(typeof (Comparision), "And", true);
        Console.WriteLine(cmp == Comparision.OR  );
        Console.WriteLine(cmp == Comparision.AND);
    }
}