-2

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

我正在访问一个网络服务方法说addWhere(int i ,int j,Comparison)

其中比较是枚举类型。

我正在从 UI 中获取值并将其保存在字符串中

string strComparison= "AND"; or

string strComparison= "OR"

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

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

但没有奏效。解决此问题或任何替代方法的方法是什么?

谢谢

4

4 回答 4

2

看起来你错过了回归演员,即

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

Enum.Parse返回一个object,因为您的addWhere方法需要一个Comparison类型值。

于 2013-04-16T10:43:05.833 回答
0

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

addWhere(2, 3, (Comparison)Enum.Parse(typeof(Comparison), strComparison));
于 2013-04-16T10:45:05.793 回答
0

您可以执行以下操作:

Comparison comparison;
if(Comparison.TryParse(strComparison, out comparison))
{
   // Work with the converted Comparison
}
于 2013-04-16T10:45:48.740 回答
0

正如之前的帖子中所说,您可能缺少类型转换。

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);
    }
}
于 2013-04-16T10:55:57.680 回答