+
C# では、 and などの演算子をオーバーロードできます*
。数学的な解釈では、これらの演算子には明確に定義された優先順位があります。
この順序はオーバーロード時に保持されますか、決定論的な方法で変更されますか、それとも優先順位もオーバーロードできますか?
+
C# では、 and などの演算子をオーバーロードできます*
。数学的な解釈では、これらの演算子には明確に定義された優先順位があります。
この順序はオーバーロード時に保持されますか、決定論的な方法で変更されますか、それとも優先順位もオーバーロードできますか?
演算子をオーバーロードすると、デフォルトの実装よりも常に優先されます。ただし、演算子自体の優先順位は変更できないため、デフォルトのままになります。MSDNの詳細情報。
関連する引用:
ユーザー定義の演算子の実装は、常に事前定義の演算子の実装よりも優先されます。該当するユーザー定義の演算子の実装が存在しない場合にのみ、事前定義の演算子の実装が考慮されます。
と
ユーザー定義の演算子宣言は、演算子の構文、優先順位、または結合性を変更できません。たとえば、/演算子は常に二項演算子であり、セクション7.2.1で指定された優先順位レベルを常に持ち、常に左結合です。
オーバーロードは優先順位を変更しません。
演算子の優先順位はコンパイラによって設定され、少なくともコンパイラをカスタマイズしない限り変更できません。