Inhoudsopgave:
Video: Your brain hallucinates your conscious reality | Anil Seth 2024
VB. NET-programma's zijn onderverdeeld in zones, net zoals de Verenigde Staten zijn verdeeld in staten, provincies en steden. Net zoals wetshandhavingsagenten verschillende groottes van jurisdicties hebben (stadsagenten, staats troopers en FBI, die overal naartoe kunnen gaan), VB. NET-lijnen van programmeren hebben invloedssoorten. Dit invloedsbereik, genaamd scope, is vooral van toepassing op variabelen (maar kan ook van toepassing zijn op procedures - subs en functies - maar ook op hele klassen).
Toegang tot een variabele
Vaak wilt u de waarde in een variabele opvragen of wijzigen, maar of die variabele voor u toegankelijk is, is afhankelijk van het bereik. U hebt bijvoorbeeld altijd toegang tot een variabele vanuit dezelfde procedure (functies, subroutines en gebeurtenissen zijn allemaal procedures).
Typ hier het volgende in uw codemodule om te zien hoe dit werkt:
Private Sub Form1_Load (ByVal-afzender als systeem. Object, ByVal e As System. EventArgs) Hiermee wordt MyBase afgehandeld. Laad
Dim N As String = "This"
MsgBox (N)
End Sub
Druk op F5 en merk op dat de MsgBox geen probleem heeft met het weergeven van de waarde van de variabele N.
Dit wordt weergegeven. Typ nu een andere sub net onder de Form1_Load-sub in het codevenster:
Public Sub TryIt ()
MsgBox (N)
End Sub
Merk op dat er een zaagtandlijn is onder de variabele N in de TryIt sub. Houd uw muisaanwijzer boven op de zaagtandlijn en VB. NET geeft een foutmelding weer dat 'N' niet is aangegeven.
Dit foutbericht betekent dat alle regels code in de TryIt-sub (tussen Public Sub en End Sub) de variabele N. N niet kunnen lezen (openen) of schrijven (wijzigen). Dim-opdracht) in een afzonderlijke procedure, en dus is de reikwijdte van N (het bereik van toegankelijkheid) beperkt tot coderegels binnen dezelfde procedure.
Hoewel Dim het meest wordt gebruikt, kunt u zeven extra aangiftecommando's gebruiken: statisch, openbaar, beveiligd, vriend, gedeeld, beschermd vriend en privé. Deze extra opdrachten specificeren scope (van welke locaties in uw programma een variabele toegankelijk is).
Merk op dat wanneer u een variabele binnen een procedure declareert, de variabele alleen binnen die procedure werkt. Wanneer het programma de procedure (of gebeurtenis) uitvoert, komt de variabele tot leven, doet zijn ding en sterft dan (verdwijnt) zodra de End Sub-regel wordt uitgevoerd.
Wanneer variabelen lokaal
zijn, worden variabelen die slechts binnen één procedure leven, lokale variabelen genoemd. Lokale variabelen hebben twee eigenschappen die u moet onthouden:
- Geen programmering buiten hun eigen procedure kan met hen interageren, hetzij om hun waarde te lezen of om hun waarde te veranderen. Hun toepassingsgebied is beperkt tot hun eigen procedure.
- Wanneer VB klaar is met het uitvoeren van de procedure waarin ze zich bevinden, verdampt hun waarde. Als die procedure een tweede keer wordt uitgevoerd, ongeacht de waarde die de lokale variabele bevatte, is deze er niet meer. Een uitvoering van de procedure is hun levensduur. Er zijn enkele situaties waarin u de waarde van een lokale variabele wilt behouden. In die gevallen gebruikt u de opdracht Static in plaats van de opdracht Dim:
Private Sub Form1_Load (ByVal-afzender als systeem. Object, ByVal e As System. EventArgs) Hiermee wordt MyBase afgehandeld. Laad
Dim n Als Integer
Static x As Integer
End Sub
In dit voorbeeld verliest de variabele n zijn waarde wanneer de End Sub wordt uitgevoerd. De variabele x behoudt echter zijn waarde totdat het programma wordt afgesloten. Een andere manier om dit te zeggen is: wanneer u de opdracht Static gebruikt met een lokale variabele, wordt de waarde van die variabele gedurende de levensduur van uw toepassing bewaard. (Lifetime betekent hoe lang iets in een programma bestaat.)
Wat zou er volgens u gebeuren als u twee opdrachtknoppen op uw formulier zou plaatsen en vervolgens het programma zou uitvoeren en eerst op Command1 zou hebben geklikt en vervolgens op Command2 geklikt, in dit volgende programma?
Private Sub-knop 1_Click (ByVal-afzender als systeem. Object, ByVal e as System. EventArgs) Handles Button1. Klik op
Dim X als geheel getal
X = 12
X = X + 5
End Sub
Private Sub-knop2_Klik op (ByVal-verzender als systeem. Object, ByVal e As System. EventArgs) Handles Button2. Klik op
Dim X als geheel getal
MsgBox (X)
End Sub
Het berichtvenster geeft niets weer. De variabele X in de Click-gebeurtenis van Command1 is een geheel andere variabele dan de X in de Click-gebeurtenis van Command2. Ze zijn lokaal van aard en hebben simpelweg geen relatie met elkaar, niet meer dan twee vreemdelingen genaamd Mike die toevallig in de Bronx wonen en elkaar nooit ontmoeten.
Maar wat als u wilt dat beide procedures dezelfde variabele kunnen openen en manipuleren? Om dit te doen, definieert u de variabele buiten uw procedures. Probeer het. Klik net boven je eerste procedure (net boven de regel Private Sub Form1_Load) in het codevenster om de invoegcursor daar te verplaatsen.
Typ nu het volgende:
Dim x Als Integer
Dat is waar u variabelen wilt plaatsen die u een formulierbrede scope wilt geven - met andere woorden, om alle procedures in die vorm toe te staan (Form1 in dit geval) om de variabele te kunnen lezen en wijzigen. (Het gebied waar u formulierbrede variabelen invoerde, was vroeger het gebied Algemene Verklaringen, voorafgaand aan VB. NET.)
Nu, met die X-variabele Gedimd daar boven (buiten) alle Subs en andere procedures, wanneer u voert hetzelfde programma uit, klikt u op Command1 en vervolgens op Command2, u ziet het resultaat dat u wilt zien: het getal 17. Wanneer u X formeel in bereik definieert, hebben de twee knoppen toegang tot die variabele X.Verwijder de twee Dim-instructies die X eerder hebben verklaard in die twee Button-gebeurtenissen. Nu verwijzen X = X + 5 en MsgBox (X) beide naar dezelfde variabele met de naam X.
Wanneer een variabele een bereik voor de hele breedte heeft, is deze dan beschikbaar voor alle procedures in die vorm. Het is echter niet beschikbaar voor de procedures in andere vormen van het project.