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