运算符重载必须是static的,不能为其他定义.方法必须命名 operator 符号; 一元运算符具有一个参数,二元运算符具有两个参数。如:public static MyClass operator +(MyClass left, MyClass right)
public static implicit operator PointF(Point p); //隐式类型转换。使用的时候,为:PointF pointf = point; //隐式转换 感觉不到类被转换了
public static explicit operator Size(Point p); //显式类型转换。使用的时候,为:Size size = (Size)point;
public static Point operator +(Point pt, Size sz);
public static Point operator -(Point pt, Size sz);
public static bool operator ==(Point left, Point right);
public static bool operator !=(Point left, Point right);
可重载运算符列表:
可以重载这些一元运算符:+、-、!、~、++、--、true 和 false
可以重载这些二进制运算符:+、-、*、/、%、&、|、^、<<、>>
比较运算符可以重载:==、!=、<、>、<=、>=
条件逻辑运算符不能重载,但可使用能够重载的 & 和 | 进行计算:&&、||
赋值运算符不能重载:+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
不能重载这些运算符:=、.、?:、->、new、is、sizeof、typeof
由于运算符重载只能定义为静态方法,所以不能为虚方法。使用下面的方法,可以解决该问题。
public class B {
public static B operator+(B b1, B b2) { return b1.Add(b2); }
protected virtual B Add(B b2) { // ...}
}