对象的+,-,X,等运算并没有定义,怎么办,可利用现有的运算符,通过重载的方法,实例类似基本类型的运算方式。

        运算符重载,用Operator来指明,且必须用Shared进行限定。(类似于C++的友元重载)

       而且VB.net的运算符重载很怪,很多运算符必须成对出现重载,否则出错。

       比如:=和<>,>和<等必须成对出现重载:


Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim a As Person = New Person(3)

        Dim b As Person = New Person(4)

        a = a + 3

        TextBox1.Text = a.show()

    End Sub

End Class
 
Public Class Person

    Private b As Int32

    Public Sub New(Optional d As Int32 = 0)

        b = d

    End Sub

    Public Shared Operator +(ByVal f As Person, ByVal d As Int32) As Person

        f.b = f.b + d

        Return f

    End Operator

    Public Shared Operator =(ByVal c As Person, ByVal d As Person) As Boolean

        Return c.b = d.b

    End Operator

    'Public Shared Operator >(ByVal c As Person, ByVal d As Person) As Boolean

    '    Return c.b > d.b

    'End Operator

    'Public Shared Operator <(ByVal c As Person, ByVal d As Person) As Boolean

    '    Return c.b < d.b

    'End Operator

    Public Shared Operator <>(ByVal c As Person, ByVal d As Person) As Boolean

        Return c.b <> d.b

    End Operator

    Public Function show() As Int32

        Return b

    End Function

End Class