[この記事は19年前に書かれました]
演算子は以下のシグニチャでオーバーロードできる。
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クラスが「==」で同じ文字列かどうか比べられるのは「==」演算子をオーバーロードしているからです。
また、勘違いして「演算子のオーバーライド」と言っているのもよく聞くので注意。


コメント