zoukankan      html  css  js  c++  java
  • 运算符重载

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

  • 相关阅读:
    XGBoost算法--学习笔记
    机器学习--学习书籍
    一天搞懂深度学习-深度学习新浪潮
    如何在 Office 365 环境中设置联机 Exchange 邮箱大小和限制
    玩转Office 365中的Exchange Online服务 之十一 怎样在Exchange Online中配置邮件传递限制《转》
    玩转Office 365中的Exchange Online服务 之六 了解Exchange Online对于邮箱使用的限制《转》
    Hyper-V Ubuntu修改分辨率
    k8s 集群基本概念<转>
    Azure 中 Linux VM 的 SSH 公钥和私钥对
    docker学习笔记(k8s) 《转》
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035667.html
Copyright © 2011-2022 走看看