C# 入門 & 実践 / C sharp
3-17. 演算子のオーバーロード!
面白いですね。まぁ滅多に使用しませんが、例えば、こんなのが使えるかもしれません。
x,y,z を一気に足し算してみます。
class Hello
{
private int x = 0;
private int y = 0;
private int z = 0;
public Hello()
{
}
public Hello( int x, int y , int z)
{
this.x = x;
this.y = y;
this.z = z;
}
// 演算子のオーバーロード!
public static Hello operator +(Hello h1, Hello h2)
{
Hello h = new Hello();
h.x = h1.x + h2.x;
h.y = h1.y + h2.y;
h.z = h1.z + h2.z;
return h;
}
public void XYZ()
{
Console.WriteLine("{0}/{1}/{2}",x,y,z);
}
}
class Tester
{
static void Main(string[] args)
{
Hello h1 = new Hello( 1,2,3);
Hello h2 = new Hello( 10,1,0);
// クラスを足しちゃいます^-^。
Hello h3 = h1 + h2;
h3.XYZ(); // 11,3,3
Hello h4 = h3 + h3;
h4.XYZ(); // 22,6,6
}
}
成功ですね。
!!! 重要 : 演算子をオーバーロードするメソッドは static !
public static Hello operator +(Hello h1, Hello h2)
3-16. nested class 入れ子クラス «
3. C# 入門 / 基礎、型、文法、基本? »
3-18. 変換演算子(キャスト)オーバーロード / implicit / explicit
C# 入門 & 実践 / C sharp