方法 : 演算子を定義する
更新 : 2007 年 11 月
クラスまたは構造体を定義してあれば、オペランドの一方または両方が、このクラスまたは構造体のデータ型であるときの、標準の演算子 (*、<>、And など) の動作を定義できます。
標準の演算子を、クラスまたは構造体の演算子プロシージャとして定義します。すべての演算子プロシージャは Public Shared である必要があります。
クラスまたは構造体で演算子を定義することを、演算子をオーバーロードするといいます。
使用例
次の例では、構造体 height の + 演算子を定義しています。この構造体では、フィート単位とインチ単位の高さを扱います。1 インチは 2.54 センチメートル、1 フィート は 12 インチです。値の正規化 (12.0 以下のインチ) を確実にするために、コンストラクタは モジュロ 12 の演算を実行します。+ 演算子は、コンストラクタを使って正規化された値を生成します。
Public Shadows Structure height
' Need Shadows because System.Windows.Forms.Form also defines property Height.
Private feet As Integer
Private inches As Double
Public Sub New(ByVal f As Integer, ByVal i As Double)
Me.feet = f + (CInt(i) \ 12)
Me.inches = i Mod 12.0
End Sub
Public Overloads Function ToString() As String
Return Me.feet & "' " & Me.inches & """"
End Function
Public Shared Operator +(ByVal h1 As height, ByVal h2 As height) _
As height
Return New height(h1.feet + h2.feet, h1.inches + h2.inches)
End Operator
End Structure
height 構造体をテストするためには、次のコードを使用してください。
Public Sub consumeHeight()
Dim p1 As New height(3, 10)
Dim p2 As New height(4, 8)
Dim p3 As height = p1 + p2
Dim s As String = p1.ToString() & " + " & p2.ToString() _
& " = " & p3.ToString() & " (= 8' 6"" ?)"
Dim p4 As New height(2, 14)
s &= vbCrLf & "2' 14"" = " & p4.ToString() & " (= 3' 2"" ?)"
Dim p5 As New height(4, 24)
s &= vbCrLf & "4' 24"" = " & p5.ToString() & " (= 6' 0"" ?)"
MsgBox(s)
End Sub
使用例を含む詳細については、「Operator Overloading in Visual Basic 2005」を参照してください。