繁体   English   中英

与 if 匹配的 C# 泛型类型模式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM