C#运算符重载
运算符的重载是指允许用户对已有运算符重新定义,按照自己的定义要求进行运算。在C#中各种运算符都有自己的方法。如果要对运算符进行重载需要使用operator关键字来定义静态成员函数。运算符重载的格式如下:
public static 返回值类型 operator 运算符(参数列表)
在运算符重载时,参数只能是值参数。
class Point
{
int x, y;
public Point(int a, int b)
{
x = a;
y = b;
}
public static Point operator ++(Point p)
{
p.x++;
p.y++;
return p;
}
public void Dislay()
{
Console.WriteLine("Point.x={0},Point.y={1}",x,y);
}
public static Point operator +(Point p1, Point p2)
{
Point p = new Point(0,0);
p.x = p1.x + p2.x;
p.y = p1.y + p2.y;
return p;
}
static void Main(string[] args)
{
Point a = new Point(10,20);
Point b = new Point(30,40);
a = a + b;
a.Dislay();
a++;
a.Dislay();
Console.ReadLine();
}
}
class Complex
{
int real;
int imag;
public Complex(int a, int b)
{
real = a;
imag = b;
}
public void Display()
{
Console.WriteLine("Complex.real={0},Complex.imag={1}",real,imag);
}
public static Complex operator +(Complex p1, Complex p2)
{
Complex p = new Complex(0,0);
p.real = p1.real + p1.real;
p.imag = p2.imag + p2.imag;
return p;
}
static void Main(string[] args)
{
Complex a = new Complex(2,3);
Complex b = new Complex(3, 4);
a = a + b;
a.Display();
Console.ReadLine();
}
}