8.2.5 运算符重载
本书前面介绍了如何使用运算符处理简单的变量类型。有时也可以把运算符用于从类实例化而来的对象,因为类可以包含如何处理运算符的指令。
例如,给Animal添加一个新属性Weight,接着使用下述代码比较家禽的体重:
if (cowA.Weight > cowB.Weight) { ... }
使用运算符重载,可以在代码中提供隐式使用Weight属性的逻辑,如下面的代码所示:
if (cowA > cowB) { ... }
大于运算持>被重载了。我们为重载运算符编写代码,执行上述操作,这段代码用作类定义的一部分,而该运算符作用于这个类。在上面的示例中,使用了两个Cow对象,所一运算符重载定义包含在Cow类中。也可以重载运算符,以相同的方式处理不同的类,其中一个(或两个)类定义包含达到这一目的的代码。
注意,只能采用这种方式重载现有的C#运算符,不能创建新的运算符。但是,可以为一元和二元运算符(如+)提供实现代码。详见第13章。