【发布时间】:2020-04-24 01:52:46
【问题描述】:
刚刚看了“新”C# 8.0 Features
所以我尝试重写以下代码
private static void RunExample(ExampleCode exampleCode)
{
switch(exampleCode)
{
case ExampleCode.DefaultInterfaceMethod:
RunDefaultInterfaceMethodExample();
break;
case ExampleCode.PatternMatchingEnhancements:
RunPatternMatchingEnhancementsExample();
break;
}
}
到这里:
private static void RunExample(ExampleCode exampleCode)
{
exampleCode switch
{
ExampleCode.DefaultInterfaceMethod => RunDefaultInterfaceMethodExample(),
ExampleCode.PatternMatchingEnhancements => RunPatternMatchingEnhancementsExample()
};
}
但是,我收到以下编译错误:
只有赋值、调用、递增、递减、等待和新建对象 表达式可以用作语句。
如何用新的语法重写它?
【问题讨论】:
-
你用什么选项编译?那个突出的“显示潜在修复”暗示了什么?
-
@underscore_d .NET Core 3.0。潜在的修复显示字面上“没有”;-)
-
由于错误指向你不能触发和忘记,这意味着新的模式匹配开关期望返回一些东西(这对于表达式来说很常见,它发生在 c# 不处理void 作为实际结果),如果您的情况是返回结果然后将结果分配给变量,那么您就可以了。
-
@vasiloreshenski 那你将如何巧妙地解决它?
标签: .net-core-3.0 c#-8.0 switch-expression