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