VB.Net Tutorial/Operator/Operator overload
Operator overload
<source lang="vbnet">Public Structure Diamond
Private weight As Single Private price As Decimal Private fWeight As Boolean Public Sub New(oz As Single, pr As Decimal) weight = oz price = pr fWeight = True End Sub Public Property ByWeight() As Boolean Get Return fWeight End Get Set fWeight = Value End Set End Property Public ReadOnly Property Size() As Single Get Return weight End Get End Property Public Shared Operator > (operand1 As Diamond, operand2 As Diamond) As Boolean If operand1.Price / operand1.Size > operand2.Price / operand2.Size Then Return True Else Return False End If End Operator Public Shared Operator < (operand1 As Diamond, operand2 As Diamond) As Boolean If operand1.Price / operand1.Size < operand2.Price / operand2.Size Then Return True Else Return False End If End Operator Public Shared Operator Or (op1 As Diamond, op2 As Diamond) As Diamond If op1.ByWeight And op2.ByWeight If op1 < op2 Then Return op1 Else Return op2 End If Else If op1.ByWeight Then Return op1 ElseIf op2.ByWeight Then Return op2 Else Return Nothing End If End If End Operator Public Shared Operator IsTrue(Byval op1 As Diamond) As Boolean If op1.ByWeight Then Return True Else Return False End If End Operator Public Shared Operator IsFalse(ByVal op1 As Diamond) As Boolean If op1.ByWeight Then Return False Else Return True End If End Operator
End Structure Public Module modTest
Public Sub Main() Dim a As Diamond = New Diamond(1, .3d) Dim b As Diamond = New Diamond(2, .5d) a.ByWeight = False b.ByWeight = True If a Or b Then Console.WRiteLine(a.Size) If a OrElse b Then Console.WriteLine(a.Size) Console.WriteLine(b < a) End Sub
End Module</source>
1 1 True