运算符重载

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 false;
                }
                else
                {
                    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();
        }
      
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值