我正在搞砸,制作一个泛型类,并且一直以来我都在考虑使用IComparable
使用比较运算符实现的类型。
我知道.CompareTo()
可以在功能上执行相同的操作,但我有一种唠叨的感觉,必须有一个实现比较运算符的接口。
我正在搞砸,制作一个泛型类,并且一直以来我都在考虑使用IComparable
使用比较运算符实现的类型。
我知道.CompareTo()
可以在功能上执行相同的操作,但我有一种唠叨的感觉,必须有一个实现比较运算符的接口。
这不是通过实现接口,而是通过运算符重载来实现。因此,要重载大于和小于比较运算符,例如,您可以执行以下操作:
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 中的接口只能声明实例成员。他们不能声明共享成员。
不可以。不能通过接口指定操作员。
接口定义了类可以实现的属性、方法和事件[但不是运算符]。
如前所述,最接近的接口是IComparable
.
有些语言有更多的糖映射(例如 Scala),但没有 VB.NET 或 C#。