Real + rhs.Real, lhs.Imaginary + rhs.Imaginary)
End Function
Public Shared Function Add _
(ByVal lhs As Complex, ByVal rhs As Double) As Complex
Return New Complex(rhs + lhs.Real, lhs.Imaginary)
End Function
Public Overrides Function ToString() As String
Return System.String.Format("({0}, {1})", Real, Imaginary)
End Function
Public Shared Operator +(ByVal lhs As Complex, ByVal rhs As Complex) As Complex
Return Add(lhs, rhs)
End Operator
Public Shared Operator +(ByVal lhs As Double, ByVal rhs As Complex) As Complex
Return Add(rhs, lhs)
End Operator
Public Shared Operator +(ByVal lhs As Complex, ByVal rhs As Double) As Complex
Return Add(lhs, rhs)
End Operator
End Structure
CHAPTER 7 n OPERATOR OVERLOADING 121
Public Class EntryPoint
Shared Sub Main()
Dim cpx1 As Complex = New Complex(1.0, 3.0)
Dim cpx2 As Complex = New Complex(1.0, 2.0)
Dim cpx3 As Complex = cpx1 + cpx2
Dim cpx4 As Complex = 20.0 + cpx1
Dim cpx5 As Complex = cpx1 + 25.0
Console.WriteLine("cpx1 == {0}", cpx1)
Console.WriteLine("cpx2 == {0}", cpx2)
Console.WriteLine("cpx3 == {0}", cpx3)
Console.WriteLine("cpx4 == {0}", cpx4)
Console.WriteLine("cpx5 == {0}", cpx5)
End Sub
End Class
Here are the results of running the previous code:
cpx1 == (1, 3)
cpx2 == (1, 2)
cpx3 == (2, 5)
cpx4 == (21, 3)
cpx5 == (26, 3)
Notice that, as recommended, the overloaded operator methods call Add methods that
perform the same operation.
Pages:
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214