繁体   English   中英

C#7模式匹配语义

[英]C# 7 pattern matching semantics

我有两个我想认为相等的代码块:

首先是基于if的块 基于IF的代码

然后完全相同,但转换为切换大小写类型。 (对不好的Resharper红色波浪状标记感到抱歉,Resharper尚不了解这一点)

基于SWITCH的代码

基于开关的代码将在第一个return Actor.Done时抛出Null引用异常,该异常不为null。

这是模式匹配错误还是在这里我缺少一些语义?

[编辑]我已经找到了解决方法。

改变这个:

case MessageEnvelope env:

case MessageEnvelope _:
    var env = m as MessageEnvelope;

使一切正常。 这样就给我提出了一个问题,难道这些行应该完全一样吗?

当您捕获(以lambda形式)在switch语句中声明的模式变量时,这是一个已知的错误。 参见https://github.com/dotnet/roslyn/issues/16066

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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