1 + 1 = 2。但是,倚天剑 + 屠龙刀 等于什么?
+ 号的含义,让它适用于你自己定义的门派(类)。这叫运算符重载 (Operator Overloading)。
使用 operator 关键字。
class Sword
{
public int Power;
public Sword(int p) { Power = p; }
// 重载 + 号:两把剑相加,返回一把新剑,威力是两把剑之和
public static Sword operator +(Sword s1, Sword s2)
{
return new Sword(s1.Power + s2.Power);
}
}
Sword yitian = new Sword(100);
Sword tulong = new Sword(120);
// 现在可以用 + 号了!
Sword superSword = yitian + tulong;
Console.WriteLine(superSword.Power); // 220
+ 号重载成“减法”的效果,那是误人子弟,会走火入魔的!
&& 和 || 就比较麻烦。
创建一个 Energy 类,包含一个 Value 属性。
重载 + 运算符,使得两个 Energy 对象相加时,内力值也相加。
class Energy
{
public int Value;
public Energy(int v) { Value = v; }
public static Energy operator +(Energy e1, Energy e2)
{
return new Energy(e1.Value + e2.Value);
}
}