ProgrammierungSoftwareingenieur (VB-Entwickler)

Wie funktioniert der Gültigkeitsbereich (Scope) von Variablen in Visual Basic und wie kann man Probleme mit der Erreichbarkeit von Variablen in verschiedenen Teilen des Programms vermeiden?

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort

In Visual Basic wird der Gültigkeitsbereich von Variablen durch den Ort ihrer Deklaration bestimmt: innerhalb einer Prozedur (lokale Variable), auf Klassen-/Modulebene (Klassen- oder Modulvariable) oder global (in einer separaten Datei).

  • Dim innerhalb einer Prozedur — die Variable ist nur in dieser Prozedur verfügbar.
  • Dim auf Klassen- oder Modul-Ebene — verfügt innerhalb aller Prozeduren der Klasse/des Moduls.
  • Die Verwendung von Public, Private, Friend — legt Beschränkungen für den Zugriff aus anderen Klassen/Modulen fest.

Beispiel:

Module Module1 Dim moduleVar As Integer = 5 Sub Main() Dim localVar As Integer = 10 Console.WriteLine(moduleVar) ' Verfügbar Console.WriteLine(localVar) ' Verfügbar End Sub Sub OtherSub() Console.WriteLine(moduleVar) ' Verfügbar Console.WriteLine(localVar) ' Fehler! End Sub End Module

Fangfrage

Welchen Gültigkeitsbereich hat eine mit Static innerhalb einer Prozedur deklarierte Variable?

Antwort:

Eine mit dem Schlüsselwort Static innerhalb einer Prozedur deklarierte Variable bleibt nur innerhalb dieser Prozedur verfügbar, ihr Wert bleibt jedoch zwischen den Aufrufen der Prozedur erhalten.

Beispiel:

Sub Counter() Static count As Integer count = count + 1 Console.WriteLine(count) End Sub ' Jeder Aufruf von Counter erhöht count

Beispiele für echte Fehler aufgrund des Unwissens über die Feinheiten des Themas


Geschichte

In einem Projekt wurde eine Flag-Variable Dim x As Boolean innerhalb einer For-Schleife deklariert, in der Annahme, dass sie bei jedem Betreten einer neuen Iteration "zurückgesetzt" wird (wie in einigen anderen Sprachen). Aber nach dem Verlassen der Schleife blieb die Variable verfügbar, was nach dem zweiten Aufruf der Prozedur zu unvorhersehbarem Verhalten führte.


Geschichte

Ein Programmierer hat eine öffentliche Variable in einem Modul deklariert, und sie wurde versehentlich von einem anderen Modul mit demselben Namen überschrieben, was zu kritischen Fehlern in verschiedenen Teilen des Programms führte. Das erschwerte das Debugging und niemand konnte die Ursache verstehen.


Geschichte

Ein Student hat eine Static-Variable zum Speichern einer Summe in einer Unterprozedur deklariert, in der Annahme, dass sie bei jedem Aufruf "gelöscht" wird. Das Ergebnis — bei wiederholten Aufrufen wuchs die Summe und lieferte ein falsches Ergebnis.