Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 操作员'==';无法应用于字符串和枚举类型的操作数_C#_Enums - Fatal编程技术网

C# 操作员'==';无法应用于字符串和枚举类型的操作数

C# 操作员'==';无法应用于字符串和枚举类型的操作数,c#,enums,C#,Enums,我有以下代码,其中Model.VerticalType包含字符串。我想将其与Enum进行比较,但得到错误: 运算符“==”不能应用于“string”和类型的操作数 DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice @if (Model.VerticalType == DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice) { <img src="@phoneWSource"

我有以下代码,其中
Model.VerticalType
包含字符串。我想将其与
Enum
进行比较,但得到错误:

运算符“==”不能应用于“string”和类型的操作数

DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice

@if (Model.VerticalType == DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice)
{
   <img src="@phoneWSource" />
}
@if(Model.VerticalType==DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice)
{
}
对枚举值调用
.ToString()

@if (Model.VerticalType == DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice.ToString())
这会将枚举转换为其名称,在这种情况下,请尝试从字符串转换为枚举值:

Enum.Parse(typeof(DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType), Model.VerticalType, true) == DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice

true
意味着在解析时忽略大小写

我实际上更喜欢
.ToString()
方法,因为如果字符串不是有效的枚举值,它只会进行字符串相等性比较并返回false,而不是抛出异常。@我认为这很大程度上取决于需求。有时,我需要字符串
“EnumValue”
“EnumValue”
“EnumValue”
等于实
EnumValue
。另外,还有一种方法
Enum.TryParse
来防止异常。。。所以,这要视情况而定。您可以同样轻松地进行不区分大小写的字符串比较,因此您的
“EnumValue”
“EnumValue”
示例并不真正有效。您的模型不能将enum作为字段存在原因吗?@Bauss代码是由其他人编写的,我无权更改它。所以我必须找到解决办法。