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.5. Module Variabelen

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.

Een nieuw soort van variabele zijn de module variabelen (1), deze zijn op moduleniveau gedeclareerd.

Men kan deze variabelen van overal in de module aanroepen.  In onderstaand voorbeeld kan sum worden aangeroepen worden in de Main- (2) of MakeSum procedure (3).
Visual Basic 2012 Broncode - Codevoorbeeld 157
Module Example1
    Dim sum As Integer                                                     ' (1)
    Sub Main()
        Dim value1 As Integer = 5
        Dim value2 As Integer = 10
        '
        MakeSum(value1, value2)
        '
        Console.WriteLine(sum)                                             ' (2)
        '
        Console.ReadLine()
    End Sub
    Sub MakeSum(ByVal value1 As Integer, ByVal value2 As Integer)
        sum = value1 + value2                                              ' (3)
    End Sub
End Module
Console Application Output
15
De levensduur van deze variabele is identiek aan de levensduur van de bevattende module.  Deze variabelen zitten dus langer bewaard in het geheugen, wat niet voordelig is.  Gebruik dergelijke variabelen dan ook enkel wanneer alle (of het merendeel) van de procedures in een module deze variabele nodig hebben en je het al te veel doorgeven van de door deze variabele voorgestelde waarde wenst te vermijden.

8.5.1. Overlappende Scopes

In onderstaand voorbeeld hebben we 3 verschillend x variabelen gedeclareerd op verschillende niveaus.  Verschillende variabelen (in overlappende scopes) met dezelfde identifier.

Technisch gezien is dit geen enkel probleem, een identifier moet immers uniek zijn binnen het geheel waarin hij is gedefinieerd.

Het zou echter niet mogelijk zijn in de dezelfde module twee variabelen te definiëren met dezelfde identifier.  Of twee lokale of argumentvariabelen met dezelfde identifier te definiëren in dezelfde procedure.
Visual Basic 2012 Broncode - Codevoorbeeld 158
Module Example2
    Dim x As Integer = 1                                                  ' (1)
    Sub Main()
        Test1()
        '
        Dim x As Integer = 2                                              ' (2)
        Console.WriteLine(x)                                              ' (3)
        '
        Test2(x)                                                          ' (4)
        '
        Console.ReadLine()
    End Sub
    Sub Test1()
        Console.WriteLine(x)                                              ' (5)
    End Sub
    Sub Test2(ByVal x As Integer)                                         ' (6)
        x += 1                                                            ' (7)
        Console.WriteLine(x)                                              ' (8)
    End Sub
End Module
Een aanroep naar een variabele zal bij voorkeur een aanroep naar een lokale of argumentvariabele zijn.

Regels (3) en (4) zijn aanroepen naar de lokale variabele gedeclareerd op regel (2).

Regels (7) en (8) zijn aanroepen naar de argumentvariabele gedefinieerd op regel (6).

Voor de Test1 procedure is er geen lokale of argumentvariabele met de naam x, regel (5) is bijgevolg een aanroep naar de module variabele gedeclareerd op regel (1).
Console Application Output
1
2
3

8.5.2. Oefeningen

Opgave :

Voorspel de output van onderstaand code.
Visual Basic 2012 Broncode - Codevoorbeeld 159
Module Exercise1Task
    Dim test As Integer
    Sub Main()
        Test1()
        Test2()
        '
        Console.ReadLine()
    End Sub
    Sub Test1()
        Dim test As Integer = 1
        Test3(test)
    End Sub
    Sub Test2()
        test = 2
        Test3(test)
    End Sub
    Sub Test3(ByVal test As Integer)
        test += test
        Console.WriteLine(test)
    End Sub
End Module
Oplossing :
Console Application Output
2
4
Opgave :
Voorspel de output van onderstaand code.
Visual Basic 2012 Broncode - Codevoorbeeld 160
Module Exercise2Task
    Dim a As Integer = 1
    Sub Main()
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        Dim d As Integer
        Dim e As Integer
        '
        a += 2
        '
        Test(a, b + e, c + 1, d)
        '
        Console.WriteLine(a)
        Console.WriteLine(b)
        Console.WriteLine(c)
        Console.WriteLine(d)
        Console.WriteLine(e)
        '
        Console.ReadLine()
    End Sub
    Sub Test(ByVal b As Integer, ByRef c As Integer, _
             ByVal d As Integer, ByRef e As Integer)
        b += a
        c += b
        d += c
        e += d
    End Sub
End Module
Oplossing :
Console Application Output
2
0
0
4
0

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