Das Verständnis Scope in Visual Basic .NET

VB.NET-Programme werden in Zonen unterteilt, ebenso wie die Vereinigten Staaten in den Staaten, Landkreise unterteilt ist, und Städte. Ebenso wie die Strafverfolgungsbehörden verschiedene Größen von Gerichtsbarkeiten (Stadt Cops, Gendarmen und FBI, die überall gehen kann) haben, VB.NET Zeilen Programm haben Bereiche Einfluss. Dieser Einflussbereich, die so genannte Umfang,

Menu

gilt vor allem für Variablen (kann aber auch für Verfahren gelten - U-Boote und Funktionen - sowie ganze Klassen).

Der Zugriff auf eine Variable

Oft möchten Sie abfragen oder den Wert in einer Variablen ändern, aber ob diese Variable zugänglich ist Ihnen auf ihrem Umfang abhängt. Zum Beispiel können Sie immer eine Variable zugreifen aus dem gleichen Verfahren (Funktionen, Subroutinen und Ereignisse sind alle Verfahren).

die folgenden in den Code-Modul, um zu sehen, wie das funktioniert, geben Sie:

Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handies MyBase.Load
Dim N As String = "Diese"
MsgBox (N)
End Sub

Drücken Sie F5, und feststellen, dass die MsgBox hat kein Problem, den Wert der Variablen N. Anzeige

Es zeigt diese. Sie nun eine weitere Unter geben Sie einfach unter dem Form1_Load Unter im Code-Fenster:

Public Sub Tryit ()
MsgBox (N)
End Sub

Beachten Sie, dass es eine sägezahnförmige Linie unter der Variablen N im Tryit sub. Halten Sie den Mauszeiger auf der Sägezahn-Linie und VB.NET zeigt eine Fehlermeldung sage Ihnen, dass Namen 'N' nicht deklariert ist.

Diese Fehlermeldung bedeutet, dass alle Codezeilen innerhalb des Tryit Unter (zwischen Public Sub und End Sub) nicht (Zugang) lesen und schreiben können (ändern) die Variable N. N (mit der Dim-Befehl) in einem separaten Verfahren erklärt wurde, und so dass der Umfang von N (sein Angebot an Zugänglichkeit) innerhalb seines gleichen Verfahren auf Codezeilen beschränkt.

Obwohl Dim die am häufigsten verwendete ist, können Sie sieben weitere Erklärung Befehle zur Verfügung: Static, Public, Protected, Friend, Geteilt, Protected Friend und Privat. Diese zusätzlichen Befehle angeben Umfang (von welchen Stellen in Ihrem Programm eine Variable zugegriffen werden kann).

Beachten Sie, dass, wenn Sie eine Variable innerhalb einer Prozedur deklarieren, die Variable in der Prozedur nur funktioniert. Wenn das Programm, das Verfahren (oder Ereignis) ausführt, kommt die Variable zum Leben, macht seine Sache, und dann stirbt (verschwindet), sobald die End Sub Zeile ausgeführt wird.

Wenn Variablen sind lokal

Variablen, die nur innerhalb eines einzigen Verfahrens leben, werden genannt lokale Variablen. Lokale Variablen haben zwei Eigenschaften, die Sie auswendig lernen müssen:

  • Keine Programmierung außerhalb ihrer eigenen Verfahren kann mit ihnen interagieren, entweder um ihren Wert zu lesen oder ihren Wert zu ändern. Ihr Umfang ist auf ihre eigenen Verfahren beschränkt.
  • Wenn VB das Verfahren beendet die Ausführung in dem sie sich befinden, verdampft ihren Wert. Wenn das Verfahren ein zweites Mal ausgeführt wird, was auch immer Wert die lokale Variable enthalten einmal nicht mehr da ist. Eine Durchführung des Verfahrens ist ihre Lebensdauer.
  • Es gibt einige Situationen, in denen Sie eine lokale Variable den Wert wollen erhalten bleiben. In diesen Fällen verwenden Sie den Static-Befehl statt der Dim-Befehl:

Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handies MyBase.Load

Dim n As Integer

Static x As Integer

End Sub

In diesem Beispiel verliert die Variable n seinen Wert, wenn der End Sub ausgeführt wird. Allerdings behält die Variable x seinen Wert, bis das Programm heruntergefahren ist. Eine andere Art, es auszudrücken, ist dies: Wenn Sie den Static-Befehl mit einer lokalen Variablen verwenden, wird der Wert dieser Variablen für die gesamte Lebensdauer Ihrer Anwendung erhalten bleibt. (Lebensdauer bedeutet, wie lange etwas in der Existenz in einem Programm.)

Was denken Sie würde passieren, wenn Sie auf einem Formular zwei Befehlsschaltflächen setzen, und dann lief das Programm und klickte Command1 zuerst, und dann Command2 geklickt haben, in diesem nächsten Programm?

Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Griffe Button1.Click
Dim X As Integer
X = 12
X = X + 5
End Sub
Private Sub Button2_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Griffe Button2.Click
Dim X As Integer
MsgBox (X)
End Sub

Das Meldungsfeld zeigt nichts. Die Variable X in Command1 Click-Ereignis ist eine ganz andere Variable aus dem X in Command2 des Click-Ereignis. Sie sind lokale in ihrem Umfang und haben einfach keine Beziehung zu einander, nicht mehr als zwei Fremde namens Mike, der in der Bronx leben passieren und sich nie treffen.

Aber was, wenn Sie diese beiden Verfahren der Lage sein, die gleiche Variable zuzugreifen und zu manipulieren? Dazu definieren Sie die Variable außerhalb Ihrer Verfahren. Versuch es. Klicken Sie einfach oben Ihre erste Verfahren (knapp über der Linie Private Sub Form1_Load) im Code-Fenster dort mit dem Cursor zu bewegen.

Nun geben Sie den folgenden:

Dim x As Integer

Das ist, wo Sie alle Variablen zu setzen möchten, die Sie bilden weiten Rahmen geben wollen - mit anderen Worten, alle Verfahren in dieser Form zu ermöglichen (Form1, in diesem Fall) in der Lage sein, um die Variable zu lesen und zu ändern. (Der Bereich, in dem Sie Formular weiten Variablen setzen verwendet werden, um den Deklarationsbereich genannt wird, vor VB.NET.)

Jetzt, mit der X-Variable dort hochgedimmt oben (außen) alle Subs und andere Verfahren, wenn Sie das gleiche Programm ausführen, Command1, und klicken Sie dann auf Command2 klicken, sehen Sie das Ergebnis, das Sie sehen wollen: die Nummer 17. Wenn Sie deklarieren X form breit gefächert sein, können die beiden Tasten zugreifen, die Variable X die beiden Dim-Anweisungen löschen, die zuvor in diesen zwei Button Ereignisse erklärt X. Jetzt X = X + 5 und MsgBox (X) beziehen sich beide auf die gleiche Variable mit dem Namen X.

Wenn eine variable Form-weiten Anwendungsbereich hat, ist es an alle Verfahren in dieser Form dann zur Verfügung. Es ist nicht möglich, jedoch zu den Verfahren in allen anderen Formen des Projekts.

Menü