運算子多載 讓自訂型別支援自然運算子語法(a + b 而非 a.Add(b)),提升可讀性與封裝性。
a.X + b.X 需 public 欄位,破壞封裝。在類別內宣告 static 成員方法:public static ReturnType operator Op(Parameters)。
+ - ! ~ ++ -- true false+ - * / % & | ^ << >> == != > < >= <== && || ? : new typeof sizeof is++
public static Player operator ++(Player p) {
p.Neili += 50; p.Tili += 100;
p.NeiliR = p.Neili; p.TiliR = p.Tili;
return p;
}
Player man = new Player(); man++; // 觸發升級邏輯
public static DKR operator +(DKR d1, DKR d2) {
return new DKR(d1.X+d2.X, d1.Y+d2.Y, d1.Z+d2.Z);
}
DKR d3 = d1 + d2; // 自然語法