Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

8.9. Method Overloading

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Men kan verschillende versies creëren van een method (procedure of functie) met dezelfde naam (identifier).  In onderstaand voorbeeld zien we een versie van de ShowDouble procedure met een Integer argument en een versie met een String argument.

De compiler zal bij een aanroep naar deze procedure ((1) en (2)) de best passende versie uitkiezen gebaseerd op de argumenten.  Geeft men dan bijvoorbeeld een Integer waarde door (1) bij de aanroep dan wordt deze aanroep gezien als een aanroep naar de versie met een Integer argument in zijn definitie, en zal hier dus het dubbele van die doorgegeven numerieke waarde op de console worden getoond.

Het creëren van verschillende versies (met verschil in parameters) van een method met identieke identifier wordt "overloading" (of voluit "method overloading") genoemd.
Visual Basic 2012 Broncode - Codevoorbeeld 173
Module Example1
    Sub Main()
        Dim value1 As Integer = 5
        ShowDouble(value1)                                                 ' (1)
        '
        Dim value2 As String = "test"
        ShowDouble(value2)                                                 ' (2)
        '
        Console.ReadLine()
    End Sub
    Sub ShowDouble(ByVal value As Integer)                                 ' (1)
        Console.WriteLine(value * 2)
    End Sub
    Sub ShowDouble(ByVal word As String)                                   ' (2)
        Console.WriteLine(word & word)
    End Sub
End Module
Console Application Output
10
testtest
Onderstaand voorbeeld illustreert hoe men ook verschillende versies kan creëren door een verschillend aantal parameters te gebruiken.  Opnieuw zal de compiler de best passende versies, hier op basis van het aantal doorgegeven parameterwaarden bepalen.
Visual Basic 2012 Broncode - Codevoorbeeld 174
Module Example2
    Sub Main()
        Console.WriteLine(GetSum(1, 2))
        Console.WriteLine(GetSum(1, 2, 3))
        Console.WriteLine(GetSum(1, 2, 3, 4))
        '
        Console.ReadLine()
    End Sub
    Function GetSum(ByVal value1 As Integer, _
                    ByVal value2 As Integer) As Integer
        GetSum = value1 + value2
    End Function
    Function GetSum(ByVal value1 As Integer, _
                    ByVal value2 As Integer, _
                    ByVal value3 As Integer) As Integer
        GetSum = value1 + value2 + value3
    End Function
    Function GetSum(ByVal value1 As Integer, _
                    ByVal value2 As Integer, _
                    ByVal value3 As Integer, _
                    ByVal value4 As Integer) As Integer
        GetSum = value1 + value2 + value3 + value4
    End Function
End Module
Console Application Output
3
6
10
Hoe verschillende versies van een method van elkaar moeten verschillen, om nog steeds voor de compiler duidelijk te houden welke versie je aanroept, is bepaald in de "overload-resolution".
In Visual Basic kunnen we verschillende versies creëren van een method door een verschil te maken in datatypes van de argumenten, aantal argumenten en volgorde van de datatypes van argumenten.

8.9.1. Oefening Method Overloading

Opgave :

Breid onderstaande programmacode zo uit dat de calls naar de GetCombination functies ook ondersteund worden.
Visual Basic 2012 Broncode - Codevoorbeeld 175
Module ExerciseTask
    Sub Main()
        Console.WriteLine(ExerciseSolution.GetCombination("abc", "def"))
        Console.WriteLine(ExerciseSolution.GetCombination(1, 2))
        Console.WriteLine(ExerciseSolution.GetCombination(True, True))
        Console.WriteLine(ExerciseSolution.GetCombination(True, False))
        Console.WriteLine(ExerciseSolution.GetCombination(False, True))
        Console.WriteLine(ExerciseSolution.GetCombination(False, False))
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
abcdef
3
True
False
False
False
Oplossing :
Visual Basic 2012 Broncode - Codevoorbeeld 176
Module ExerciseSolution
    Function GetCombination(ByVal value1 As String, _
                            ByVal value2 As String) As String
        GetCombination = value1 & value2
    End Function
    Function GetCombination(ByVal value1 As Integer, _
                            ByVal value2 As Integer) As Integer
        GetCombination = value1 + value2
    End Function
    Function GetCombination(ByVal value1 As Boolean, _
                            ByVal value2 As Boolean) As Boolean
        GetCombination = value1 AndAlso value2
    End Function
End Module

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.