Innehållsförteckning:
Video: Biblical Series I: Introduction to the Idea of God 2024
VB. NET-program är indelade i zoner, precis som Förenta staterna är indelade i stater, län och städer. Precis som brottsbekämpande agenter har olika storlekar av jurisdiktioner (stads poliser, statliga soldater och FBI, som kan gå någonstans), VB. NET-programmeringslinjer har olika inflytande. Denna inflytande, som kallas scope, , gäller mestadels för variabler (men kan också gälla för procedurer - subs och funktioner - samt hela klasser).
Åtkomst till en variabel
Ofta vill du fråga eller ändra värdet i en variabel, men huruvida den variabeln är tillgänglig för dig beror på omfattningen. Till exempel kan du alltid få tillgång till en variabel från samma procedur (funktioner, underrutiner och händelser är alla procedurer).
För att se hur detta fungerar skriver du följande i din kodmodul:
Privat Subform1_Load (ByVal-avsändare Som System. Objekt, ByVal e Som System. EventArgs) Hanterar MyBase. Ladda
Dim N As String = "This"
MsgBox (N)
Slutdel
Tryck på F5 och märk att MsgBox har inga problem med att visa värdet på variabeln N.
Den visar detta. Skriv nu en annan del precis under Form1_Load-delen i kodfönstret:
Public Sub TryIt ()
MsgBox (N)
Slutdel
Observera att det finns en sågtandlinje under variabeln N i TryIt sub. Håll muspekaren ovanpå sågtångslinjen och VB. NET visar ett felmeddelande som säger att namnet 'N' inte anges.
Detta felmeddelande innebär att alla koder i TryIt-suben (mellan Public Sub och End Sub) inte kan läsa (åtkomst) eller skriva (ändra) variabeln N. N deklarerades (med Dim-kommandot) i ett separat förfarande, och så är omfattningen av N (dess tillgänglighetsområde) begränsad till linjer av kod inom samma procedur.
Även om Dim är den vanligaste kan du använda sju ytterligare deklarationskommandon: Statisk, Offentlig, Skyddad, Vän, Delad, Skyddad Vän och Privat. Dessa ytterligare kommandon anger omfattning (från vilka platser i ditt program kan en variabel nås).
Observera att när du förklarar en variabel i ett förfarande, fungerar variabeln endast inom ramen för det här förfarandet. När programmet kör proceduren (eller händelsen), kommer variabeln till liv, gör sin sak och dör sedan (försvinner) så snart slutgränsen utförs.
När variabler är lokala
Variabler som endast lever i ett enda förfarande heter lokala variabler. Lokala variabler har två egenskaper som du behöver memorera:
- Ingen programmering utanför egen procedur kan interagera med dem, antingen för att läsa deras värde eller för att ändra deras värde. Deras räckvidd är begränsat till sin egen procedur.
- När VB slutar genomföra proceduren där de bor, förångas deras värde. Om det här förfarandet exekveras en andra gång, det värdet som den lokala variabeln en gång innehöll är inte längre där. Ett utförande av förfarandet är deras livstid. Det finns några situationer där du vill att en lokal variabels värde ska bevaras. I sådana fall använder du kommandot Statisk istället för kommandot Dim:
Privat Subform1_Load (ByVal-avsändare Som System. Objekt, ByVal e Som System. EventArgs) Hanterar MyBase. Load
Dim n som heltal
Statisk x som heltal
Slutdel
I det här exemplet förlorar variabeln sitt värde när slutdelen utförs. Men variabeln x behåller sitt värde tills programmet stängs av. Ett annat sätt att uttrycka det är det här: När du använder det statiska kommandot med en lokal variabel bevaras värdet på den variabeln under hela applikationens livslängd. (Livslängd betyder hur länge något finns i ett program.)
Vad tror du skulle hända om du sätter två kommandoknappar på din blankett, och sedan körde du programmet och klickade på Command1 först och klickade sedan på Command2, i det här nästa programmet?
Privat Sub Button1_Click (ByVal avsändare Som System. Objekt, ByVal e Som System. EventArgs) Hanterar Button1. Klicka på
Dim X som heltal
X = X + 5
Slutdel
Privat subknapp2_Click (ByVal-avsändare Som System. Objekt, ByVal e Som System. EventArgs) Hanterar Button2. Klicka på
Dim X som heltal
MsgBox (X)
Slutdel
Meddelandeboxen visar ingenting. Variabeln X i Command1s Click-händelse är en helt annan variabel från X i Command2s Click-händelse. De är lokala och har helt enkelt inget förhållande till varandra, inte mer än två främlingar som heter Mike som råkar bo i Bronx och aldrig träffas.
Men om du vill att båda dessa förfaranden ska kunna komma åt och manipulera samma variabel? För att göra detta definierar du variabeln utanför dina procedurer. Försök. Klicka precis ovanför din första procedur (precis ovanför linjen Privat Subform1_Load) i kodfönstret för att flytta insättningsmarkören där.
Skriv nu följande:
Dim x As Integer
Det är här du vill lägga till några variabler som du vill ge hela formatet - med andra ord att tillåta alla procedurer i den formuläret (Form1, i det här fallet) för att kunna läsa och ändra variabeln. (Det område där du lägger till formulärformade variabler brukade kallas Allmänna deklarationer-området, före VB. NET.)
Nu, med den X-variabeln Dimmad uppe ovan (utanför) alla delarna och andra procedurer, när Du kör samma program, klickar på Command1 och sedan på Command2, ser du resultatet du vill se: numret 17. När du förklarar X för att vara omfattande, kan de två knapparna nå den variabeln X.Ta bort de två Dim-förklaringarna som tidigare deklarerade X inom de två knapphändelserna. Nu hänvisar X = X + 5 och MsgBox (X) båda till samma variabel som heter X.
När en variabel har ett bredformat, är det tillgängligt för alla procedurer i den formuläret. Det är emellertid inte tillgängligt för förfarandena i andra former i projektet.