方法: 演算子を定義する (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
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET