Q)C#での演算子のオーバーロードに「public」と「static」が必要なのはなぜですか?
この記事を試しました
しかし、誰かが著者が言おうとしていることを説明できますか?
Q)C#での演算子のオーバーロードに「public」と「static」が必要なのはなぜですか?
この記事を試しました
しかし、誰かが著者が言おうとしていることを説明できますか?
著者は、非静的な方法でのオペレーターのオーバーロードの潜在的な機能の簡単なコスト/メリット分析を行い、そのメリットはコストを正当化しないと結論付けています。静的にオーバーロードされた演算子の内部からのメソッド。ただし、中間の仮想関数を使用せずにオーバーロードされた演算子を定義できるようにするコストは大きくなります。
2+c
違法かもしれませんが、c+2
問題ありません) 。null
左側の参照を処理する必要があります最後に、著者は、大きなメリットをもたらさずに多くの混乱をもたらす機能を導入するのではなく、同等のレベルの機能を提供するために拡張できる、よりクリーンな設計を採用したと述べています。
public は、クラスの外からアクセスできるようにするために必要です。クラスのインスタンスで呼び出さないため、 static が必要です。
public class B {
public static B operator+(B b1, B b2) { return b1.Add(b2); }
protected virtual B Add(B b2) { // ...
上記の例では、次のようなコードを使用できますb3 = b1 + b2
。ここで + 演算子は、クラス B のいずれのインスタンスでも呼び出されないため、静的である必要があります。お役に立てれば。