操作符重载的一般方式是:
初始化一个类:
public class ComplexNumber
{
public double a = 0, b = 0;
public ComplexNumber(double x,double y)
{
a = x;
b = y;
}
public static ComplexNumber operator +(ComplexNumber num1, ComplexNumber num2)
{
return new ComplexNumber(num1.a + num2.a, num1.b + num2.b);
}
}
然后在操作符重载函数上使用operator关键字,另外得使用静态的static
使用:
private void button1_Click(object sender, EventArgs e)
{
ComplexNumber c1 = new ComplexNumber(10.1, 10.2);
ComplexNumber c2 = new ComplexNumber(10.3, 10.4);
//ComplexNumber c3 = ComplexNumber.Add(c1, c2);
ComplexNumber c3 = c1 + c2;
}
还一个例子:
public class Prime
{
public uint x;
public Prime(uint x1)
{
x = x1;
}
public static uint operator +(Prime p1, Prime p2)
{
return p1.x + p2.x;
}
public static int operator -(Prime p1, Prime p2)
{
return (int)(p1.x - p2.x);
}
public static explicit operator uint(Prime p)
{
return p.x;
}
public static bool operator true(Prime p)
{
for (uint i = 2; i <= p.x / 2; i++)
if (p.x % i == 0)
return false;
return true;
}
public static bool operator false(Prime p)
{
for (uint i = 2; i <= p.x / 2; i++)
if (p.x % i == 0)
return true;
return false;
}
}
private void button2_Click(object sender, EventArgs e)
{
for (uint i = 50; i <= 100; i++)
{
Prime p1 = new Prime(i);
if (p1)
{
listBox1.Items.Add(i.ToString());
}
}
}
虽然会使用,但是并不知道这样使用的好处是什么,请知道的朋友不吝赐教。