/// <summary>
/// 操作符重载
/// </summary>
class OpeartorOver
{
public double r;
public double v;
public OpeartorOver(double r, double v)
{
this.r = r;
this.v = v;
}
public static OpeartorOver operator +(OpeartorOver a, OpeartorOver b)
{
return new OpeartorOver(a.r * 2 + b.r, a.v + 3 * b.v);
}
public static OpeartorOver operator -(OpeartorOver a)
{
return new OpeartorOver(-a.r, -a.v);
}
public static OpeartorOver operator ++(OpeartorOver a)
{
double R = a.r + 100;
double V = a.v + 100;
return new OpeartorOver(R, V);
}
public void Print()
{
Console.WriteLine(r + " + " + v + "i");
}
}
class Program
{
static void Main(string[] args)
{
OpeartorOver a = new OpeartorOver(3, 4);
OpeartorOver b = new OpeartorOver(5, 6);
OpeartorOver c = -a;
c.Print();
OpeartorOver d = a + b;
d.Print();
a.Print();
OpeartorOver e = a++;
a.Print();
e.Print();
OpeartorOver f = ++a;
a.Print();
f.Print();
Console.Read();
}
}
操作符是C#中用于定义类的实例对象间表达式操作的一种成员。和索引器类似,操作符仍然是对方法实现的一种逻辑界面抽象,也就是说在编译成的IL中间语言代码中,操作符仍然是以方法的形式调用的。在类内定义操作符成员又叫操作符重载。C#中的重载操作符共有三种:一元操作符,二元操作符和转换操作符。并不是所有的操作符都可以重载,三种操作符都有相应的可重载操作符集,列于下表:
一元操作符 + - ! ~ ++ -- true false
二元操作符 + - * / % & | ^ << >> == != > < >= <=
转换操作符 隐式转换()和显式转换()