演算子のオーバーロード

演算子は以下のシグニチャでオーバーロードできる。 

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クラスが「==」で同じ文字列かどうか比べられるのは「==」演算子をオーバーロードしているからです。 
また、勘違いして「演算子のオーバーライド」と言っているのもよく聞くので注意。

0 件のコメント :

コメントを投稿