|
Dit artikel is gepubliceerd op zondag 31 juli 2011 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 2010 Broncode Module Example1 Dim sum As Integer Sub Main() Dim value1 As Integer = 5 Dim value2 As Integer = 10 MakeSum(value1, value2) Console.WriteLine(sum) Console.ReadLine() End Sub Sub MakeSum( ByVal value1 As Integer, ByVal value2 As Integer) sum = value1 + value2 End SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output 15 De levensduur van deze variabele is identiek aan de levensduur van de bevattende module. Deze variabelen zitten dus langer gestockeerd 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 ScopesIn 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 2010 Broncode Module Example2 Dim x As Integer = 1 Sub Main() Test1() Dim x As Integer = 2 Console.WriteLine(x) Test2(x) Console.ReadLine() End Sub Sub Test1() Console.WriteLine(x) End Sub Sub Test2( ByVal x As Integer) x += 1 Console.WriteLine(x) End SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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 boven
8.5.2. OefeningenOpgave :
Voorspel de output van onderstaand code. Visual Basic 2010 Broncode 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Oplossing : Console Application Output 2
4 Opgave : Voorspel de output van onderstaand code. Visual Basic 2010 Broncode 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Oplossing : Console Application Output 2
0
0
4
0
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|