Die Deklaration Globale, statische Variablen
Ich versuche eine Globale variable in Visual Studio, aber ich kann es nicht statisch. Gibt es irgendeine Möglichkeit für mich, legen Sie die variable als statisch und teilen Sie Sie über verschiedene Methoden, oder irgendeine Art und Weise zu speichern, die variable jedes mal, wenn Sie sich ändert?
- Statische in VB.NET ist
Shared
. Rufen Sie es auf diese Weise:ClassName.SharedVariableName
. Es mussPublic
zu erreichen außerhalb dieser Klasse. Beachten Sie, dass Sie nicht teilen, es nur durch Methoden, aber auch über verschiedene threads, die dazu führen können sperren oder falsche Ergebnisse (f.e. in ASP.NET). - Danke für die Beruhigung auf den "Shared" - statisch. Es scheint, dass ich entweder vor einer run-time Fehler in meiner Arbeit, oder die "Gemeinsame" form der Variablen . Würden Sie mir bitte ein Beispiel?
- Können Sie nach Ihren code
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zwei Möglichkeiten:
1 - Erstellen Sie eine Klasse, die enthält eine gemeinsam genutzte variable (dies ist das gleiche, eine statische variable in c#)
Können Sie dann Zugriff auf diese mit Hilfe der Klasse-name:
2 - Erstellen Sie ein Modul (das ist vergleichbar mit einer statischen Klasse in c#)
Können Sie dann Zugriff auf diesen Wert im code wie folgt:
Wenn Sie die Nummer 1 option präsentiert von @Matt Wilko, können Sie auf die freigegebenen Element entweder über ein Objekt, das Instanz der Klasse oder durch den Verweis auf die Klasse, ohne eine Referenz auf ein Objekt. Sowohl Punkt-zu-und-Schrittweite die gleiche variable und damit auf den gleichen Wert. Obwohl der Visual Studio-compiler bietet eine Verwarnung über den Verweis auf ein Objekt-Instanz und sagt, dass es nicht ausgewertet werden, es noch kompiliert. Der compiler Empfehlung ist, den Namen der Klasse.
Legen Sie die folgenden in einem Formular, und rufen IncrementIntegers() über eine Schaltfläche click-Ereignis-Prozedur und Sie werden feststellen, dass myGlobalVariables.Foo und GlobalVariables.Foo beide zurück 20.
Beachten Sie, dass bei option 1, Foo qualifiziert werden muss entweder der name der Klasse oder ein Objekt-Namen. Mit option 2 es ist ein Modul und keine Klasse ist also eine Referenz auf ein Objekt kann nicht erstellt werden. Die öffentliche variable, auf die verwiesen werden kann, ohne qualifizierende es mit dem Modul-Namen, es sei denn, eine variable mit dem gleichen Namen in einem anderen Modul, in dem Fall der compiler mit werfen Sie einen Namen Konflikt auf. Zum Beispiel,
Entfernen "Modul2" und " Foo aufgerufen werden kann, unqualifizierten, von überall aus.
Mit "Modul2" präsentieren, Foo müssen qualifiziert werden, mit den Namen, da beide auf unterschiedlichen Variablen und repräsentieren unterschiedliche und voneinander unabhängige Werte.