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

  • 相关阅读:
    subprocess模块小记 分类: python Module 2013-12-04 17:13 287人阅读 评论(0) 收藏
    去除文件中的重复元素后写入文件 分类: python 小练习 open()文件读写 2013-12-03 11:21 356人阅读 评论(0) 收藏
    结尾非零数的奇偶性 分类: python 小练习 2013-12-02 18:04 371人阅读 评论(0) 收藏
    获取数字特定因子元素的个数 分类: python 小练习 2013-12-02 16:57 250人阅读 评论(0) 收藏
    输出 结尾0的个数 分类: python 小练习 2013-12-02 16:46 393人阅读 评论(0) 收藏
    查看JVM参数
    线程池配置合理线程数
    线程池的手写和拒绝策略
    死锁及定位分析
    Callable接口用法
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035667.html
Copyright © 2011-2022 走看看