我正在捣乱,制作一个通用类,而且这一次我想使用使用比较运算符启用IComparable
的类型。
我知道.CompareTo()
可以在功能上执行相同的操作,但我有一种唠叨的感觉,必须有一个实现比较运算符的接口。
答案 0 :(得分:6)
而不是通过实现接口,这是通过operator overloading完成的。因此,例如,要重载大于和小于比较运算符,您可以执行以下操作:
Public Class MyNumber
Public Value As Integer
Public Overloads Shared Operator >(ByVal x As MyNumber, ByVal y As MyNumber) As Boolean
Return (x.Value > y.Value)
End Operator
Public Overloads Shared Operator <(ByVal x As MyNumber, ByVal y As MyNumber) As Boolean
Return (x.Value < y.Value)
End Operator
End Class
由于运算符重载定义为Shared
,因此接口无法声明它们。 VB.NET中的接口只能声明实例成员。他们不能宣布共享成员。
答案 1 :(得分:5)
没有。无法通过界面指定操作员。
Interfaces定义类可以实现的属性,方法和事件[但不是操作符]。
如上所述,最近的界面是IComparable
。
有些语言有更多的糖映射(例如Scala),但没有VB.NET或C#。