2017-01-06 12 views
2

私が考えるしたいコードの2つのブロックが等しいた:C#7のパターンマッチングセマンティクス

まずifベースブロック IF based code

そしてまったく同じであるが、タイプ上ケースを切り替える変換。

SWITCH based code

コードがnullでない最初return Actor.Doneにnull参照例外がスローされ基づいてスイッチを(悪いResharperの赤色の波線マーカーについて申し訳ありませんが、Resharperのは、まだこのことを理解doesntの)。

これはパターンマッチのバグですか、私がここで欠けている意味ですか?

私はそれのための修正を見つけた[編集] ..

この変更:

case MessageEnvelope _: 
    var env = m as MessageEnvelope; 

case MessageEnvelope env: 

は、それがすべての仕事します。 それで、私には疑問が残っています。

+0

最初は「Started」と比較され、2番目は「Started.msg」と比較されます。 – jdweng

+0

番号。 "msg"はpatternmatch内の型付き変数の名前です。 "。"はありません。そこに –

+0

あなたは実際の値が何であるかを見るためにスイッチ内のブレークポイントを使ってみましたか? –

答えて

関連する問題