天天看點

運算符重載

C#中也有類似于C++的運算符重載,如下例中Rectangel中的+操作

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

    class Program

    {

        public class Rectangle

        {

            public int width;

            public int height;

            public Rectangle(int width, int height)

            {

                this.width = width;

                this.height = height;

            }

            public override string ToString()

                return "width= " + width + ",height = " + height;

            public static bool operator ==(Rectangle lhs, Rectangle rhs)

                Console.WriteLine("In operator ==");

                if (lhs.width == rhs.width && lhs.height == rhs.height)

                {

                    return true;

                }

                else

                    return false;

            public static bool operator !=(Rectangle lhs, Rectangle rhs)

                Console.WriteLine("In operator !=");

                return !(lhs == rhs);

            public override bool Equals(object obj)

                Console.WriteLine("In Equals()");

                if (!(obj is Rectangle))

                    return this == (Rectangle)obj;

            public static Rectangle operator +(Rectangle lhs, Rectangle rhs)

                Console.WriteLine("In operator +");

                return new Rectangle(lhs.width + rhs.width, lhs.height + rhs.height);

        }

        static void Main(string[] args)

            Rectangle myRectangle = new Rectangle(1, 4);

            Console.WriteLine("myRectangle: " + myRectangle);

            Rectangle myRectangle2 = new Rectangle(1, 4);

            Console.WriteLine("myRectangle2: " + myRectangle2);

            if (myRectangle == myRectangle2)

                Console.WriteLine("myRectangle is equal to myRectangle2");

            else

                Console.WriteLine("myRectangle is not equal to myRectangle2");

            Rectangle myRectangle3 = myRectangle + myRectangle2;

            Console.WriteLine("myRectangle3: " + myRectangle3);

            int i = System.Console.Read();

    }

}