1

我有一个旧的 C# 库,我正在转换为 Boo,它使用运算符重载。为了不了解原因,我正在寻找一种在 Boo 中做同样事情的方法。

这采取以下形式:

public static bool operator <(Duration duration, TimeSpan timespan) {...}

但是,Boo 使用不同形式的运算符重载,并且没有“运算符”关键字。

public static def op_LessThan(duration as Duration, timespan as TimeSpan) as bool:
    pass

(来自http://boo.codehaus.org/Operator+overloading

这些二元运算符可以重载:

  • op_Addition
  • op_减法
  • op_Multiply
  • op_Division
  • op_Modulus
  • op_Exponentiation
  • op_Equality
  • op_LessThan
  • op_LessThanOrEqual
  • op_GreaterThan
  • op_GreaterThanOrEqual
  • op_Match
  • op_NotMatch
  • op_Member
  • op_NotMember
  • op_BitwiseOr
  • op_BitwiseAnd

但我在该列表中没有看到类似 op_NotEqual(!=) 的内容。这些方法是否等同于上述 C# 代码?如果是这样,什么相当于

public static bool operator !=(Duration duration, TimeSpan timespan) {...}
4

1 回答 1

2

它应该是op_Inequality(从 C#/.NET 方面) - 但我不知道 Boo 是否或如何支持它。我怀疑这只是一个文档错误,并且可能会正常工作。

于 2011-04-01T00:42:17.747 回答