|
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) Dim value2 As String = "test" ShowDouble(value2) Console.ReadLine() End Sub Sub ShowDouble( ByVal value As Integer) Console.WriteLine(value * 2) End Sub Sub ShowDouble( ByVal word As String) Console.WriteLine(word & word) End SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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 FunctionEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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 OverloadingOpgave :
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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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 FunctionEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|