War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Dim-Anweisung

Dim-Anweisung (Visual Basic)

Deklariert und reserviert Speicherplatz für eine oder mehrere Variablen.


[ <attributelist> ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]] [ ReadOnly ] 
Dim [ WithEvents ] variablelist

attributelist

Optional. Siehe Attributliste.

accessmodifier

Optional. Einer der folgenden Werte ist möglich:

Siehe Zugriffsebenen in Visual Basic.

Shared

Optional. Siehe Shared.

Shadows

Optional. Siehe Shadows.

Static

Optional. Siehe Static.

ReadOnly

Optional. Siehe ReadOnly.

WithEvents

Optional. Gibt an, dass diese Objektvariablen sind, die auf Instanzen einer Klasse verweisen, Ereignisse auslösen können. Siehe WithEvents.

variablelist

Erforderlich. Liste der Variablen, die in dieser Anweisung deklariert werden.

variable [ , variable ... ]

Jede variable verfügt über folgende Syntax und folgende Bestandteile:

variablename[ ( [ boundslist ] ) ] [ As [ New ] datatype ] [ = initializer ]

Bestandteil Beschreibung

variablename

Erforderlich. Name der Variablen. Siehe Namen deklarierter Elemente.

boundslist

Optional. Liste der Grenzen jeder Dimension einer Arrayvariablen.

New

Optional. Erstellt eine neue Instanz der Klasse, wenn die Dim-Anweisung ausgeführt wird.

datatype

Erforderlich, wenn Option Strict den Wert On aufweist. Datentyp der Variablen.

initializer

Optional, wenn New nicht angegeben wird. Ausdruck, der ausgewertet und der Variablen bei der Erstellung zugewiesen wird.

Deklarieren Sie jede Variable, die Sie im Programm verwenden, um für den Visual Basic-Compiler den Datentyp der Variablen und weitere Informationen, z. B. welcher Code auf die Variable zugreifen kann, anzugeben. Im folgenden Beispiel wird eine Variable deklariert, die einen Integer-Wert enthalten soll.

Dim numberOfStudents As Integer

Dim kann nur auf Modul- oder Prozedurebene verwendet werden. Dies bedeutet, dass der Deklarationskontext für eine Variable eine Klasse, eine Struktur, ein Modul, eine Prozedur oder ein Block sein muss und keine Quelldatei, kein Namespace und keine Schnittstelle sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.

Wenn Option Explicit auf On (Standard) festgelegt ist, erfordert der Compiler eine Deklaration für jede verwendete Variable. Wenn Sie Option Explicit Off festlegen, ist der Standardwert jeder nicht deklarierten Variablen vom Object-Datentyp, was möglicherweise nicht von Ihnen beabsichtigt ist.

In der Dim-Anweisung können Sie den Datentyp jeder Variablen angeben. Sie können außerdem einen Anfangswert angeben. Andernfalls verwendet Visual Basic Standardeinstellungen. Weitere Informationen finden Sie auf dieser Hilfeseite in "Ausführliche Informationen" unter "Datentypregeln" und "Standardwerte". Im folgenden Beispiel wird eine String-Variable deklariert und initialisiert.

Dim summary As String = "Summary of results" 

Sie können angeben, welcher Code auf eine Variable zugreifen kann, indem Sie in der Dim-Anweisung einen accessmodifier angeben. Weitere Informationen finden Sie auf dieser Hilfeseite in "Ausführliche Informationen" unter "Modifizierer" und "Zugriffsebene".

Sie können eine Variable deklarieren, die ein Array enthalten soll, das mehrere Werte enthalten kann. Weitere Informationen finden Sie auf dieser Hilfeseite in "Ausführliche Informationen" unter "Arrayregeln". Weitere Informationen über Arrays finden Sie unter Arrays in Visual Basic. Im folgenden Beispiel wird eine Integer-Arrayvariable deklariert.

Dim days() As Integer 

Im Allgemeinen sollten Sie alle Dim-Anweisungen am Beginn des Codebereichs einfügen, in dem Sie die Variablen verwenden. Weitere Informationen finden Sie auf dieser Hilfeseite in "Ausführliche Informationen" unter "Problembehandlung".

In diesem Abschnitt werden die folgenden Themenbereiche ausführlich behandelt:

  • Deklaration

  • Datentypen

  • Arrays

  • Verhalten

  • Problembehandlung

Deklarationsregeln

  • Deklarationskontext. Eine auf Modulebene deklarierte Variable, die sich außerhalb jeglicher Prozedur befindet, ist eine Membervariable oder ein Feld. Sie ist ein Member der Klasse, der Struktur oder des Moduls, in der bzw. dem sie deklariert ist.

    Eine auf Prozedurebene deklarierte Variable ist eine lokale Variable. Sie ist nur lokal in der Prozedur oder dem Block gültig, in der bzw. dem sie deklariert ist.

  • Attribute. Sie können Attribute nur auf Membervariablen und nicht auf lokale Variablen anwenden. Ein Attribut fügt den Metadaten einer Assembly Informationen hinzu. Dies ist für die temporäre Speicherung, z. B. in lokalen Variablen, nicht sinnvoll.

  • Implizite Verwendung von Dim. Wenn Sie einen der Modifizierer Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly oder WithEvents angeben, können Sie das Dim-Schlüsselwort auch auslassen.

    Public maximumAllowed As Double
    Protected Friend currentUserName As String
    Private salary As Decimal
    Static runningTotal As Integer
    

    Auf Modulebene können Sie Membervariablen nicht mit dem Static-Modifizierer deklarieren. Auf Prozedurebene können Sie lokale Variablen nicht mit Shared, Shadows, ReadOnly, WithEvents und nicht mit Zugriffsmodifizierern deklarieren.

  • WithEvents-Variablen. Sie können WithEvents nur für Membervariablen und nicht für lokale Variablen in einer Prozedur angeben.

    Wenn Sie WithEvents angeben, muss der Datentyp der Variablen ein bestimmter Klassentyp sein und darf nicht Object sein. Sie können Arrays nicht mit WithEvents deklarieren.

    Weitere Informationen über Ereignisse finden Sie unter Ereignisse und Ereignishandler.

  • Mehrere Variablen. Sie können in derselben Deklarationsanweisung mehrere Variablen deklarieren, indem Sie den variablename-Teil für jede Variable vor dem in Klammern eingeschlossenen Arraynamen angeben. Mehrere Variablen werden durch Komma voneinander getrennt.

    Dim lastTime, nextTime, allTimes() As Date
    

Datentypregeln

  • Datentypen. Die Dim-Anweisung kann den Datentyp einer Variablen deklarieren. Sie können einen beliebigen Datentyp oder den Namen einer Enumeration, Struktur, Klasse oder Schnittstelle angeben.

    Dim finished As Boolean
    Dim monitorBox As System.Windows.Forms.Form
    
  • Standardtyp. Wenn Sie keinen datatype angeben, übernimmt die Variable automatisch den Datentyp initializer. Wenn weder datatype noch initializer angegeben vorhanden ist, wird standardmäßig Object-Datentyp als Datentyp verwendet. Wenn Sie sowohl datatype als auch initializer angeben, muss der Datentyp initializer in datatype konvertiert werden können.

  • Andere Typen. Sie können für verschiedene Variablen unterschiedliche Datentypen angeben, indem Sie für jede deklarierte Variable eine eigene As-Klausel verwenden. Stattdessen können Sie auch mit einer gemeinsamen As-Klausel für mehrere Variablen denselben Datentyp deklarieren. Jede Variable übernimmt den Datentyp, der in der ersten As-Klausel nach dem jeweiligen variablename-Teil angegeben wird.

    Dim a, b, c As Single, x, y As Double, i As Integer
    ' a, b, and c are all Single; x and y are both Double
    
  • Initialisierung. Die Dim-Anweisung kann den Inhalt von ausgewählten Variablen in der variablelist initialisieren. Für einen Werttyp verwenden Sie initializer, um einen der Variablen zuzuweisenden Ausdruck anzugeben. Der Ausdruck muss eine Konstante ergeben, die zur Kompilierzeit berechnet werden kann.

    Dim quantity As Integer = 10
    Dim message As String = "Just started"
    

    Für einen Verweistyp verwenden Sie das New-Schlüsselwort, um eine neue Instanz der von datatype angegebenen Klasse oder Struktur zu erstellen. Wenn Sie New angeben, verwenden Sie keinen initializer-Ausdruck. Stellen Sie stattdessen ggf. Argumente für den Konstruktor der Klasse bereit, aus der Sie die Variable erstellen.

    Dim bottomLabel As New System.Windows.Forms.Label
    

    Wenn Sie mehrere Variablen mit derselben As-Klausel deklarieren, können Sie keinen initializer für diese Variablengruppe angeben.

Arrayregeln

  • Arrayvariablen. Um anzugeben, dass eine Variable in variablelist ein Array ist, fügen Sie direkt nach ihrem variablename Klammern an. Wenn das Array mehrere Dimensionen aufweist, müssen Sie zwischen den Klammern Kommas einfügen, um die Anzahl der Dimensionen anzugeben.

    Dim oneDimension(), twoDimensions(,), threeDimensions(,,) As Byte
    

    Ein Array kann zwischen 1 bis 32 Dimensionen aufweisen.

    Weitere Informationen finden Sie unter Arrays in Visual Basic.

  • Arraygrenzen. Sie können die Unter- und Obergrenze jeder Dimension angeben. Hierzu fügen Sie in die Klammern eine boundslist ein. Die boundslist gibt für jede Dimension die Obergrenze und optional die Untergrenze an. Die Untergrenze ist immer 0 (null), unabhängig davon, ob Sie sie angeben. Jeder Index kann zwischen 0 (null) und dem Wert seiner Obergrenze betragen.

    Die folgenden beiden Anweisungen sind gleichwertig. Jede Anweisung deklariert ein Array von 21 Integer-Elementen. Beim Zugriff auf das Array kann der Index zwischen 0 und 20 betragen.

    Dim totals(20) As Integer
    Dim totals(0 To 20) As Integer
    

    Die folgende Anweisung deklariert ein zweidimensionales Array vom Typ Double. Das Array weist 4 Zeilen (3 + 1) von jeweils 6 Spalten (5 + 1) auf.

    Dim matrix2(3, 5) As Double
    

    Beachten Sie, dass die Obergrenze der höchste mögliche Wert für diesen Feldindex und nicht die Länge der Dimension ist. Diese wird durch die Obergrenze plus eins bestimmt.

  • Leere Arraygrenzen. Sie können in einer Arraydeklaration alle Grenzen leer lassen. In diesem Fall weist das Array die Anzahl der angegebenen Dimensionen auf, ist jedoch nicht initialisiert und hat daher den Wert Nothing, bis Sie mindestens eines seiner Elemente initialisieren. In der Dim-Anweisung müssen entweder Grenzen für alle Dimensionen oder für keine Dimension angegeben werden.

    Dim messages() As String
    
  • Leere Arrays. Die Obergrenze einer Arraydimension kann mit -1 deklariert werden. Dies bedeutet, dass das Array leer, jedoch nicht Nothing ist, eine Unterscheidung, die bei bestimmten Common Language Runtime-Funktionen wichtig ist. Visual Basic-Code kann auf ein solches Array jedoch nicht erfolgreich zugreifen. Bei einem Zugriffsversuch wird während der Ausführung ein IndexOutOfRangeException-Fehler ausgelöst. Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines Arrays ohne Elemente.

  • Arrayinitialisierung. Sie können die Werte eines Arrays initialisieren, indem Sie die Initialisierungswerte in geschweifte Klammern ({}) einschließen.

    Dim longArray() As Long = {0, 1, 2, 3}
    

    Für mehrdimensionale Arrays wird die Initialisierung jeder einzelnen Dimension in geschweifte Klammern innerhalb der äußeren Dimension eingeschlossen. Die Elemente werden in zeilengerichteter Reihenfolge angegeben.

    Dim twoDimensions(,) As Integer = {{0, 1, 2}, {10, 11, 12}}
    

Verhalten

  • Standardwerte. Wenn Sie keinen initializer für eine Variable angeben, initialisiert Visual Basic die Variable mit dem Standardwert des jeweiligen Datentyps. In der folgenden Tabelle werden die Standardinitialisierungswerte aufgeführt.

    Datentyp Standardwert

    Alle numerischen Typen (einschließlich Byte und SByte)

    0

    Char

    Binäre 0

    Alle Verweistypen (einschließlich Object, String und aller Arrays)

    Nothing

    Boolean

    False

    Date

    12:00 am 1. Januar des Jahres 1 (01/01/0001 12:00:00 AM)

    Jedes Element einer Struktur wird wie eine eigene Variable initialisiert. Wenn Sie die Länge eines Arrays deklarieren, doch seine Elemente nicht initialisieren, wird jedes Element wie eine eigene Variable initialisiert.

  • Zugriffsebene. Lokale Variablen (in einer Prozedur) weisen standardmäßig öffentlichen Zugriff auf. Für diese Variablen können keine Zugriffsmodifizierer verwendet werden.

    Standardmäßig gilt für Klassen- und Modulmembervariablen (außerhalb einer Prozedur) privater Zugriff und für Strukturmembervariablen öffentlicher Zugriff. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen.

  • Gültigkeitsbereich. Der Gültigkeitsbereich lokaler Variablen umfasst nur ihre Prozedur oder ihren Block. Der Gültigkeitsbereich von Membervariablen umfasst ihre Klasse, ihr Struktur oder ihr Modul.

  • Qualifizierung. Code außerhalb einer Klasse, einer Struktur oder eines Moduls muss den Namen einer Membervariablen mit dem Namen der Klasse, der Struktur bzw. des Moduls qualifizieren. Code außerhalb einer Prozedur oder eines Blocks kann auf keine lokalen Variablen innerhalb dieser Prozedur bzw. dieses Blocks verweisen.

  • Lebensdauer. Eine lokale Static-Variable verfügt über eine längere Lebensdauer als die Prozedur, in der sie deklariert ist. Die Grenzwerte der Lebensdauer einer Variablen sind abhängig davon, wo die Prozedur deklariert wird und ob sie Shared ist.

    Prozedurdeklaration Variable ist initialisiert Variable wird gelöscht

    In einem Modul

    Beim ersten Aufruf der Prozedur

    Beim Beenden der Programmausführung

    In einer Klasse oder Struktur Shared

    Beim ersten Aufruf der Prozedur für eine bestimmte Instanz oder für die Klasse bzw. Struktur selbst

    Beim Beenden der Programmausführung

    In einer Klasse oder Struktur nicht Shared

    Beim ersten Aufruf der Prozedur für eine bestimmte Instanz

    Bei der Freigabe der Instanz für die Garbage Collection (GC)

Problembehandlung

  • Ausführungsreihenfolge. Die Dim-Anweisung selbst ist keine ausführbare Anweisung. Wenn sie eine oder mehrere Variablen initialisiert, werden die Initialisierungen jedoch als Zuweisungsanweisungen behandelt. Dies bedeutet, dass der Wert einer Variablen die folgenden Schritte durchläuft:

    1. Visual Basic initialisiert beim ersten Auftreten des Codeelements, das die Variable deklariert, die Variable mit dem Standardwert für ihren Datentyp.

    2. Wenn die Ausführung auf die Dim-Anweisung der Variablen trifft, initialisiert sie Visual Basic mit dem in der Dim-Anweisung angegebenen Wert.

    3. Wenn die Ausführung zur Dim-Anweisung der Variablen zurückkehrt, legt sie Visual Basic erneut auf den in der Dim-Anweisung angegebenen Wert fest.

    Daraus ergeben sich die folgenden Konsequenzen, wenn Sie eine Variable mit einer Dim-Anweisung initialisieren:

    • Wenn Sie die Variable vor der Ausführung der Dim-Anweisung verwenden, ist ihr Wert der Standardwert für ihren Datentyp und nicht der in der Dim-Anweisung angegebene Wert.

    • Wenn die Ausführung die Dim-Anweisung niemals erreicht, wird die Variable niemals mit dem in der Dim-Anweisung angegebenen Wert initialisiert.

    • Wenn Sie den Wert ändern, doch anschließend zu der Dim-Anweisung zurückkehren, wird der geänderte Wert durch den in der Dim-Anweisung angegebenen Wert ersetzt.

    Wenn Sie alle Dim-Anweisungen am Anfang des Codebereichs einfügen, in dem sie sich befinden sollen, z. B. am Anfang eines Moduls oder einer Prozedur, werden sie vom Code wie beabsichtigt initialisiert.

Im folgenden Beispiel werden Variablen unter Verwendung der Dim-Anweisung mit verschiedenen Optionen deklariert.

' The following statement declares and initializes a Long variable.
Dim startingAmount As Long = 500

' The following statement declares a variable that refers to a Button 
' object, creates a new Button object, and assigns it to the variable.
Dim switchButton As New System.Windows.Forms.Button

' The following statement declares a variable that can only be 
' accessed by code in the same class, structure, or module.
Private homeTelephone As String = ""

' The following statement declares a local variable that always retains
' its value, even after its procedure returns to the calling code.
Static totalSales As Double

' The following statement declares a variable that refers to an array.
Dim highTemperature(31) As Integer

' The following statement declares and initializes an array variable 
' that holds 4 Boolean check values.
Dim checkValues() As Boolean = {False, False, True, False}

Anzeigen:
© 2015 Microsoft