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))
但没有工作。解决这个问题的方法是什么或有其他方法吗?
谢谢
看起来您缺少返回类型转换,即
(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);
}
}