VB.NET Overloading

In this article I will explain you about overloading in VB.NET.
  • 2423
 

VB.NET allows user-defined types to overload operators by defining static member functions using the operator keyword. The operator keyword is used to declare an operator in a class or struct declaration. Not all operators can be overloaded, and some that can be overloaded have certain restrictions, as listed in the given below Table.

Arithmetic Operators Concatenation Operators Comparison Operators Logical / Bitwise Operators
^ + = Not
- & <> And
*   < AndAlso
/   > Or
\   >= OrElse
mod   <= Xor
+      
-      

The given below example illustrates overloading on complex numbers. 

Example of Operator Overloading  

    Imports System
    Public Class Complex
        Public real As Integer = 0
        Public imaginary As Integer = 0

        Public Sub New(ByVal real As IntegerByVal imaginary As Integer)
            Me.real = real
            Me.imaginary = imaginary
        End Sub
        Public
 Shared Operator +(ByVal c1 As ComplexByVal c2 As ComplexAs Complex
            Return New Complex(c1.real + c2.real, c1.imaginary + c2.imaginary)
        End Operator

        Public
 Shared Sub Main()
            Dim num1 As New Complex(2, 3)
            Dim num2 As New Complex(3, 4)
            Dim sum As Complex = num1 + num2
            Console.WriteLine("Real: {0}", sum.real)
            Console.WriteLine("Imaginary: {0}", sum.imaginary)
            Console.ReadLine()
        End Sub
    End
 Class

Screen Output Generated from the above code 

overloading1.gif

The next example presents a more sophisticated example of operator overloading. 

Example of Sophisticated Operator Overloading 

    Imports System
    Class Rectangle
        Private iHeight As Integer
        Private
 iWidth As Integer

        Public
 Sub New()
            Height = 0
            Width = 0
        End Sub

        Public
 Sub New(ByVal w As IntegerByVal h As Integer)
            Width = w
            Height = h
        End Sub

        Public
 Property Width() As Integer
            Get
                Return
 iWidth
            End Get
            Set
(ByVal value As Integer)
                iWidth = value
            End Set
        End
 Property

        Public
 Property Height() As Integer
            Get
                Return
 iHeight
            End Get
            Set
(ByVal value As Integer)
                iHeight = value
            End Set
        End
 Property

        Public
 ReadOnly Property Area() As Integer
            Get
                Return
 Height * Width
            End Get
        End
 Property
        
        Public Shared Operator =(ByVal a As RectangleByVal b As RectangleAs Boolean
            Return
 ((a.Height = b.Height) AndAlso (a.Width = b.Width))
        End Operator

        Public Shared Operator <>(ByVal a As RectangleByVal b As RectangleAs Boolean
            Return
 Not (a = b)
        End Operator

        Public Shared Operator >(ByVal a As RectangleByVal b As RectangleAs Boolean
            Return
 a.Area > b.Area
        End Operator

        Public Shared Operator <(ByVal a As RectangleByVal b As RectangleAs Boolean
            Return
 Not (a > b)
        End Operator

        Public Shared Operator >=(ByVal a As RectangleByVal b As RectangleAs Boolean
            Return
 (a > b) OrElse (a = b)
        End Operator

        Public Shared Operator <=(ByVal a As RectangleByVal b As RectangleAs Boolean
            Return
 (a < b) OrElse (a = b)
        End Operator

        Public
 Overrides Function Equals(ByVal o As ObjectAs Boolean
            Return
 Me.Equals(o)
        End Function

        Public
 Overrides Function GetHashCode() As Integer
            Return
 Me.GetHashCode()
        End Function

        Public
 Overrides Function ToString() As [String]
            Return "Height=" + Height + ",Width=" + Width
        End Function

        Public
 Shared Sub Main()
            Dim objRect1 As New Rectangle()
            Dim objRect2 As New Rectangle()
            Dim objRect3 As New Rectangle(10, 15)
            objRect1.Height = 15
            objRect1.Width = 10
            objRect2.Height = 25
            objRect2.Width = 10
            Console.WriteLine("Rectangle#1 ", objRect1)
            Console.WriteLine("Rectangle#2 ", objRect2)
            Console.WriteLine("Rectangle#3 ", objRect3)
            If objRect1 = objRect2 Then
                Console.WriteLine("Rectangle1 & Rectangle2 are Equal.")
            Else
            If
 objRect1 > objRect2 Then
                Console.WriteLine("Rectangle1 is greater than Rectangle2")
            Else
            Console.WriteLine("Rectangle1 is lesser than Rectangle2")
            End If
            End
 If
            If
 objRect1 = objRect3 Then
                Console.WriteLine("Rectangle1 & Rectangle3 are Equal.")
            Else
                Console.WriteLine("Rectangle1 & Rectangle3 are not Equal.")
            End If
            Console.ReadLine()
        End Sub
    End
 Class

Screen Output Generated from the above code

overloading2.gif

Conclusion


Hope this article would have helped you in understanding Overloading in VB.NET.
 

Categories

More Articles

© 2020 DotNetHeaven. All rights reserved.