Ce que vous cherchez à faire est appelé "operator overloading", qui vous permet de définir des opérateurs de comparaison et de mathématiques pour les types complexes (comme votre classe Something
).
Par exemple, vous pouvez surcharger les opérateurs d'addition et de soustraction à partir de votre Something
classe comme ceci:
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
Et vous pouvez écrire du code comme:
Dim newValue As Something = something1 + something2
Vous pouvez également surcharger les opérateurs de comparaison (supérieur à, inférieur à, égal à, et tout le reste) presque de la même manière:
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
Permettant d'écrire du code comme:
If something1 > something2 Then
MesssageBox.Show("The first value is larger.")
Else
MessageBox.Show("The second value is larger.")
End If
Notez, cependant, que certains de ces opérateurs doivent être surchargées dans paires. Plus précisément:
=
et <>
>
et <
>=
et <=
IsTrue
et IsFalse
Ceci est la réponse la plus utile et instructif que je l'ai lu dans les deux dernières semaines. Merci beaucoup, Cody! Vous avez solidement répondu à ma question. – Brad
@Brad: De rien! Heureux d'avoir pu aider. –