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

  • 相关阅读:
    移动端--基于Android Studio的项目文件结构(一)【转】
    java知识体系粗略梳理
    简单的使用hibernate插入数据的例子
    触发器
    存储过程和函数
    视图
    索引的设计和使用
    数据类型的选择
    表类型(存储引擎)的选择
    MySQL中的常用函数
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035667.html
Copyright © 2011-2022 走看看