4

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

public bool Equals(Uri? x, Uri? y) => (x, y) switch
{
    (null, _) => false,
    (_, null) => false,
    ({}, {}) => x.Equals(y)
};

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

アップデート

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

public bool Equals(Uri? x, Uri? y) => x switch
{
    null => false,
    {} => x.Equals(y)
};
4

0 に答える 0