文字列を比較するカスタム比較子の他の誰かのコードを見ています。
文字列パラメーターの少なくとも 1 つが null の場合、失敗することに気付きました。
比較は、比較の結果に基づいて -1、0、または 1 を返します。
このようなコードは、null を処理するように修正する必要がありますか? その場合、パラメーターの 1 つが null の場合、何を返す必要がありますか?
文字列を比較するカスタム比較子の他の誰かのコードを見ています。
文字列パラメーターの少なくとも 1 つが null の場合、失敗することに気付きました。
比較は、比較の結果に基づいて -1、0、または 1 を返します。
このようなコードは、null を処理するように修正する必要がありますか? その場合、パラメーターの 1 つが null の場合、何を返す必要がありますか?
IComparer.Compare Method (MSDN)の備考セクションによると
null は任意の型と比較でき、IComparable を使用する場合は例外が生成されません。並べ替えの際、null は他のどのオブジェクトよりも小さいと見なされます。
つまり、次のことは理にかなっているようです。
答えは、最終的にはビジネス要件の結果になるはずです。
おそらく、コードは特定の一連の要件に合わせて作成されており、null は考慮されていませんでした。
次の場合は修正する必要があります。
比較子の目的にもよると思いますが、文字列の 1 つが null の場合に例外をスローするように比較子を変更することに傾倒します。これは、1 つの文字列が他の文字列より大きいか、等しいか、小さいかを返すという比較子の目的に反しているようです。Null はそのセットに収まりません。