运算符重载

  本书前面介绍了如何使用运算符处理简单的变量类型。有时也可以把运算符用于从类实例化而来的对象,因为类可以包含如何处理运算符的指令。

  例如,给 Animal 添加一个新属性 Weight。接着使用下述代码比较家畜的体重:

  1. if (cowA.Weight > cowB.Weight)
  2. {
  3. ...
  4. }

  使用运算符重载,可在代码中提供隐式使用 Weight 属性的逻辑,如下面的代码所示:

  1. if (cowA > cowB)
  2. {
  3. ...
  4. }

  大于运算符 > 被重载了。我们为重载运算符编写代码,执行上述操作,这段代码用作类定义的一部分,而该运算符作用于这个类。在上面的示例中,使用了两个 Cow 对象,所以运算符重载定义包含在 Cow 类中。也可以采用相同的方式重载运算符,使其处理不同的类,其中一个(或两个)类定义包含到达这一目的的代码。

  注意,只能采用这种方式重载现有的 C#运算符,不能创建新的运算符。但可以为一元和二元运算符(如 + )提供实现代码。详见第 13 章。