比較演算子など、一部の演算子で必要なのはなぜですか。
< <= > >= = <>
あなたもそれらの補完を実装する必要がありますか?
< >=
オブジェクトの実装を制限するものは何ですか
<
それが特定の意味を持っている場合、そして
>=
しません
注:私が行った回避策は、不要な演算子に廃止属性を固定することです。
比較演算子など、一部の演算子で必要なのはなぜですか。
< <= > >= = <>
あなたもそれらの補完を実装する必要がありますか?
< >=
オブジェクトの実装を制限するものは何ですか
<
それが特定の意味を持っている場合、そして
>=
しません
注:私が行った回避策は、不要な演算子に廃止属性を固定することです。
.Netでの演算子のオーバーロード(少なくともC#とVBの場合)は、C++での演算子のオーバーロードよりも意図的に柔軟性が低くなっています。
Javaがオーバーロードを完全に削除するまでに進んだ理由の1つは、オーバーロードを悪用して他の開発者を混乱させ、たとえば、ユーザータイプ。
.Netはある程度の柔軟性を取り戻しましたが、設計者は、通常の意味でのみ使用されることを意図して、特定の演算子のオーバーロードのみを許可するように注意しました。
比較演算子を対称的に実装するという要件は、その意図に賛成です。
より積極的な演算子のオーバーロードを実行したい場合は、F#の使用を検討することをお勧めします。ここでは、巧妙な演算子記号を描画するためのはるかに幅広い記号パレットにアクセスできます。
おそらく、演算子の片側をオーバーロードすると、カスタムルールが実装され、デフォルトの演算子がルールと一致しないため、奇妙な動作が発生するためです。
たとえば、「int>」の定義が「return(x> 5);」の場合 (何らかの理由で...)そして、'int <'演算子の逆の規則を上書きしなかったので、;
4> 1は(ルールによって)falseになりますが、4 <1も(デフォルトのルールによって)falseになります。
ジム、これは非論理的です。