我正在做一个泛型类,一直以来我都在考虑使用实现 IComparable
的类型。使用比较运算符启用。
我知道.CompareTo()
可以在功能上执行相同的操作,但是我有一种唠叨的感觉,必须有一个实现比较运算符的接口(interface)。
最佳答案
这不是通过实现接口(interface),而是通过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
,它们不能由接口(interface)声明。 VB.NET 中的接口(interface)只能声明实例成员。他们不能声明共享成员。
关于.net - 是否有启用 > < 和所有其他比较运算符的界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201996/