custom の定義に次のコードがありますIEqualityComparer<Uri?>
。
public bool Equals(Uri? x, Uri? y) => (x, y) switch
{
(null, _) => false,
(_, null) => false,
({}, {}) => x.Equals(y)
};
最後のアームの呼び出しで CS8602 警告が表示されEquals
、可能性x
がnull
あることがわかりました。しかし、 wedの場合に一致しないx
オブジェクトパターンと照合しました。そのブランチにある原因となる可能性のある制御フローを見逃していますか、それとも不可能であり、それを強打する必要がありますか? アナライザーのバグですか、それとも既知の制限ですか?{}
x
null
x
null
アップデート
これは、タプルを分解した場合にのみ発生することに注意してください。このコードは正しく、警告はありません。
public bool Equals(Uri? x, Uri? y) => x switch
{
null => false,
{} => x.Equals(y)
};