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