.net - 是否有启用 > < 和所有其他比较运算符的界面?

标签 .net vb.net interface operator-overloading syntactic-sugar

我正在做一个泛型类,一直以来我都在考虑使用实现 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/

相关文章:

c# - 总是在方法的开头使所有输出参数无效是一种好习惯吗

.net - 确定TextFile编码?

c# - 将 mp4 转换为 mp3

vb.net - 'Option Strict' 是否依赖 'Option Infer' 来检测未声明的变量?

c# - 了解 C# 接口(interface)

java - 为什么执行时没有出现Error "Add unimplemented methods"(Eclipse)

.net - 使用 IN 子句参数的 SQL Server 查询

.net - "Overflow"编译器错误 -9223372036854775808L

go - 为什么直接实现的接口(interface)上的这种类型断言会失败?

c# - Linq 的 InsertOnSubmit 未添加到变更集