[この記事は18年前に書かれました]
演算子は以下のシグニチャでオーバーロードできる。
public static クラス名 operator 演算子(引数) (例)複素数クラスの「+」演算子のオーバーロード
class Complex { int r; int i; public Complex(int r, int i) { this.r = r; this.i = i; } // 演算子「+」のオーバーロード public static Complex operator +(Complex c1, Complex c2) { return new Complex(c1.r + c2.r, c1.i + c2.i); } } ~ Complex c1 = new Complex(1, 3); Complex c2 = new Complex(5, 6); c1 = c1 + c2;
と書いてから気づいたのだが、MSDNのサンプルとほとんど同じコードになってる(w もったいないので投稿しちゃいます。
MSDNの「演算子のオーバーロードを使用して複素数クラスを作成する」が参考になります。 ちなみに、stringクラスが「==」で同じ文字列かどうか比べられるのは「==」演算子をオーバーロードしているからです。
また、勘違いして「演算子のオーバーライド」と言っているのもよく聞くので注意。
コメント