你正在尋找的是"operator overloading",它允許你爲複雜類型(比如你的類Something
)定義比較和數學運算符。
例如,你可以從你的Something
類中重載加法和減法運算符是這樣的:
Public Shared Operator +(ByVal val1 As Something, ByVal val2 As Something) As Something
''#(calculate the sum of the two specified values)
Return New Something(val1.SomeBigNumber + val2.SomeBigNumber)
End Operator
Public Shared Operator -(ByVal val1 As Something, ByVal val2 As Something) As Something
''#(calculate the difference of the two specified values)
Return New Something(val1.SomeBigNumber - val2.SomeBigNumber)
End Operator
然後你就可以編寫代碼:
Dim newValue As Something = something1 + something2
你也可以以幾乎完全相同的方式過載比較運算符(大於,小於,等於及其間的所有內容):
Public Shared Operator >(ByVal val1 As Something, ByVal val2 As Something) As Boolean
''#(return True if the first value is larger, False otherwise)
Return (val1.SomeBigNumber > val2.SomeBigNumber)
End Operator
Public Shared Operator <(ByVal val1 As Something, ByVal val2 As Something) As Boolean
''#(return True if the first value is smaller, False otherwise)
Return (val1.SomeBigNumber < val2.SomeBigNumber)
End Operator
允許你寫的代碼,如:
If something1 > something2 Then
MesssageBox.Show("The first value is larger.")
Else
MessageBox.Show("The second value is larger.")
End If
但是請注意,其中一些運營商必須在對超載。具體做法是:
=
和<>
>
和<
>=
和<=
IsTrue
和IsFalse
這是我在過去的兩年讀過的最有用的信息回答周。謝謝科迪!你堅定地回答了我的問題。 – Brad 2010-11-27 06:08:07