16

+C# では、 and などの演算子をオーバーロードできます*。数学的な解釈では、これらの演算子には明確に定義された優先順位があります。

この順序はオーバーロード時に保持されますか、決定論的な方法で変更されますか、それとも優先順位もオーバーロードできますか?

4

2 に答える 2

20

演算子をオーバーロードすると、デフォルトの実装よりも常に優先されます。ただし、演​​算子自体の優先順位は変更できないため、デフォルトのままになります。MSDNの詳細情報。

関連する引用:

ユーザー定義の演算子の実装は、常に事前定義の演算子の実装よりも優先されます。該当するユーザー定義の演算子の実装が存在しない場合にのみ、事前定義の演算子の実装が考慮されます。

ユーザー定義の演算子宣言は、演算子の構文、優先順位、または結合性を変更できません。たとえば、/演算子は常に二項演算子であり、セクション7.2.1で指定された優先順位レベルを常に持ち、常に左結合です。

于 2012-10-17T23:51:35.863 に答える
4

オーバーロードは優先順位を変更しません。

演算子の優先順位はコンパイラによって設定され、少なくともコンパイラをカスタマイズしない限り変更できません。

于 2012-10-17T23:57:13.740 に答える