次の方法で共有


方法: 演算子を定義する (Visual Basic)

クラスまたは構造体を定義している場合、一方または両方のオペランドがクラスまたは構造体の型である場合の標準演算子 (*<>、または 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

関連項目