homelinksBlijf op de hoogte van de recente aanpassingen op vbvoorbeelden!
Visual Basic 2010 Voorbeelden

visual basic 2010 broncode voorbeelden

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

8.9. Method Overloading

Print Email Deel op Facebook Deel op Twitter

Dit artikel is gepubliceerd op zondag 31 juli 2011 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 2010 Broncode
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 2010 Broncode
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 2010 Broncode
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 2010 Broncode
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 zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.