c#与if匹配的泛型模式



我在blazor服务器项目中有这个enum定义:

public enum MyEnum
{
MyValue1 = 1,
MyValue2 = 2,
...
}

我有这个blazor组件(。剃须刀文件):

@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的类型…

你知道吗?

感谢** EDIT **

这就是我所尝试的,我得到的编译错误:

@if (e1 is MyEnum)
{
MyEnum e2 = e1 as MyEnum;
...
}

错误是:

操作符必须与引用类型或可空类型一起使用('MyEnum'是非空值类型)

您可以尝试使用:

MyEnum e2 = e1;

相关内容

  • 没有找到相关文章

最新更新