|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
Static variabelen zijn variabelen die worden gedeclareerd op procedureniveau, en die enkele aanroepbaar zijn in deze procedure.
De levensduur van deze variabelen is gelijk aan de levensduur van de module waarin ze zijn gedefinieerd. Wat als gevolg heeft dat static variabelen slechts eenmalig worden gedeclareerd, en dat deze variabelen hun waarde behouden ook al is de procedure waarin die static variabele is gedeclareerd beëindigd. Visual Basic 2010 Broncode Module Example1 Sub Main() Test1() Test1() Test1() Test2() Test2() Test2() Console.ReadLine() End Sub Sub Test1() Static x As Integer x += 1 Console.WriteLine(x) End Sub Sub Test2() Static x As Integer = 10 x += 1 Console.WriteLine(x) End SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output 1
2
3
11
12
13 Gezien dergelijke static variabele pas uit het geheugen wordt gehaald als de levensduur van de module afloopt, zijn ook deze ( net als variabelen op moduleniveau ) meer belastend voor het geheugen. Wees zuinig met static variabelen, of probeer zelfs het gebruik ervan indien mogelijk te vermijden.
Static variabelen worden gebruikt om hun waarden in een uitvoeringsinstantie van een procedure ook in volgende uitvoeringsinstanties te kunnen gebruiken.
In onderstaand voorbeeld zal de eerste keer dat de Test procedure wordt uitgevoerd er een andere output gegeven worden dan bij volgende uitvoeringsinstanties. Visual Basic 2010 Broncode Module Example2 Sub Main() Test() Test() Test() Console.ReadLine() End Sub Sub Test() Static firstExecution As Boolean = True If firstExecution Then Console.WriteLine( "First execution of Test.") firstExecution = False Else Console.WriteLine( "Not the first execution of Test.") End If End SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output First execution of Test.
Not the first execution of Test.
Not the first execution of Test. 8.6.1. OefeningOpgave :
Voorspel de output van onderstaand programma zonder het programma uit te voeren. Visual Basic 2010 Broncode Module Exercise1Task Sub Main() Test1() Test1() Console.ReadLine() End Sub Sub Test1() Static t1 As Integer = 10 t1 += 1 Test2(t1) Test2(t1) End Sub Sub Test2( ByVal t2 As Integer) Static t3 As Integer = 20 t3 += t2 Console.WriteLine(t3) End SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Oplossing : Console Application Output 31
42
54
66
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|