問題タブ [switch-expression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
472 参照

c# - switch 式でオブジェクト パターンと一致した後に null 参照の可能性がある逆参照 (CS8602)

custom の定義に次のコードがありますIEqualityComparer<Uri?>

最後のアームの呼び出しで CS8602 警告が表示されEquals、可能性xnullあることがわかりました。しかし、 wedの場合に一致しないxオブジェクトパターンと照合しました。そのブランチにある原因となる可能性のある制御フローを見逃していますか、それとも不可能であり、それを強打する必要がありますか? アナライザーのバグですか、それとも既知の制限ですか?{}xnullxnull

アップデート

これは、タプルを分解した場合にのみ発生することに注意してください。このコードは正しく、警告はありません。

0 投票する
0 に答える
127 参照

c# - 誰かが C# スイッチ式でこの型推論の「グリッチ」を説明できますか?

C# のスイッチ式をいじっていたところ、非常に奇妙なことに遭遇しました。

コードは次のとおりです。

IDE (Visual Studio) は、IDE0004 C# キャストが冗長であると警告します。だから私はそれを信頼し、キャストを削除することにしました. 両方の (Func<int, string>) キャストに適用されます。

そこで、そのうちの 1 つを削除することにしました。

しかし今、IDE は「switch」キーワードに赤で下線を引いています。「エラー」のメッセージは「スイッチ式に最適な型が見つかりませんでした」です。この時点で、冗長性に関する IDE からの提案は無効であり、それに従うとエラーが挿入されると思います。しかし... プログラムを実行すると、キーワードに赤の下線が引かれ、エラーが発生しても、エラーなしでコンパイルされ、正常に実行されます ("hello" が出力され、ReadLine でブロックされます)。

問題は、これは (IDE またはコンパイラの) バグですか? その場合、どこに報告できますか? そうでない場合...誰かがなぜこれが起こっているのか詳しく説明してくれませんか?

おまけ: また、"x" が代わりに DateTimeOffset であるとしましょう。

現在、「スイッチ」は同じエラーでまだ赤ですが、さらに「DayOfWeek」は赤で、マウスオーバーすると「シンボル 'DayOfWeek' を解決できません」と表示されますが、型の定義はそこにあり、すべてがコンパイルされ、期待どおりに動作します「こんにちは土曜日」を出力します。

そこから、2 番目のキャスト (Func<DateTimeOffset, string>) を削除すると、エラー CS0149: Method name expected が原因でコンパイルされません (どういうわけか式を適切に解析できないと思います)。