私はいじくり回してジェネリッククラスを作成していますが、これまでずっと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#にはありません。