[英]C# Generic type pattern matching with an if
我在 blazor 服务器项目中有这个枚举定义:
public enum MyEnum
{
MyValue1 = 1,
MyValue2 = 2,
...
}
我有这个 blazor 组件(.razor 文件):
@typeparam T
@switch (e1)
{
case MyEnum e2:
@* Doing some stuff with e2 which is MyEnum type *@
...
break;
...
}
@code
{
[Parameter]
public MyEnum e1 { get; set; }
}
这段代码运行良好,但我对它的编写方式不满意。
我想用 if 语句替换开关,但它不起作用。 当我尝试将 e1 转换为 MyEnum 类型时出现编译错误,即使我检查了 T 的类型...
任何想法 ?
谢谢
** 编辑 **
有我试过的和我得到的编译错误:
@if (e1 is MyEnum)
{
MyEnum e2 = e1 as MyEnum;
...
}
错误是:
运算符必须与引用类型或可为空的类型一起使用('MyEnum' 是不可为空的值类型)
您可以尝试使用:
MyEnum e2 = e1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.