第二十四式:C# 运算符重载 (乾坤挪移)

绝世
秘籍
冲儿,你知道 1 + 1 = 2。但是,倚天剑 + 屠龙刀 等于什么?
这……应该是一堆废铁?还是号令天下的权力?
在 C# 里,你可以重新定义 + 号的含义,让它适用于你自己定义的门派(类)。这叫运算符重载 (Operator Overloading)

1. 语法 - 改写天道

使用 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);
    }
}
        

2. 使用 - 神兵合体


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);
    }
}
                    

成就解锁:【炼金术士】 获得:合成卷轴