Freigeben über


Anweisungen in Visual Basic

Eine Anweisung in Visual Basic ist eine vollständige Anweisung. Sie kann Schlüsselwörter, Operatoren, Variablen, Konstanten und Ausdrücke enthalten. Jede Aussage gehört zu einer der folgenden Kategorien:

  • Deklarationsanweisungen, die eine Variable, Konstante oder Prozedur benennen und auch einen Datentyp angeben können.

  • Ausführbare Anweisungen, die Aktionen initiieren. Diese Anweisungen können eine Methode oder Funktion aufrufen, und sie können Codeblöcke in Schleifen oder Verzweigungen durchlaufen. Ausführbare Anweisungen enthalten Assignment-Anweisungen, die einer Variablen oder Konstante einen Wert oder Ausdruck zuweisen.

In diesem Thema werden die einzelnen Kategorien beschrieben. Außerdem wird in diesem Thema beschrieben, wie Sie mehrere Anweisungen in einer einzelnen Zeile kombinieren und wie Sie eine Anweisung über mehrere Zeilen fortsetzen.

Declaration Statements (Deklarationsanweisungen)

Sie verwenden Deklarationsanweisungen, um Prozeduren, Variablen, Eigenschaften, Arrays und Konstanten zu benennen und zu definieren. Wenn Sie ein Programmierelement deklarieren, können Sie auch den Datentyp, die Zugriffsebene und den Bereich definieren. Weitere Informationen finden Sie unter "Deklarierte Elementmerkmale".

Das folgende Beispiel enthält drei Deklarationen.

Public Sub ApplyFormat()
    Const limit As Integer = 33
    Dim thisWidget As New widget
    ' Insert code to implement the procedure.
End Sub

Die erste Deklaration ist die Sub-Anweisung. Zusammen mit der entsprechenden End Sub Anweisung deklariert sie eine Prozedur mit dem Namen applyFormat. Es wird auch angegeben, dass applyFormatPublic ist, was bedeutet, dass jeder Code, der darauf verweisen kann, es aufrufen kann.

Die zweite Deklaration ist die Const Anweisung, die die Konstante limitdeklariert, die den Integer Datentyp und einen Wert von 33 angibt.

Die dritte Deklaration ist die Dim Anweisung, die die Variable thisWidgetdeklariert. Der Datentyp ist ein bestimmtes Objekt, nämlich ein aus der Widget Klasse erstelltes Objekt. Sie können eine Variable als einen beliebigen elementaren Datentyp oder einen beliebigen Objekttyp deklarieren, der in der von Ihnen verwendeten Anwendung verfügbar gemacht wird.

Anfangswerte

Wenn der Code mit einer Deklarationsanweisung ausgeführt wird, reserviert Visual Basic den für das deklarierte Element erforderlichen Arbeitsspeicher. Wenn das Element einen Wert enthält, initialisiert Visual Basic ihn mit dem Standardwert für den Datentyp. Weitere Informationen finden Sie unter „Verhalten“ in Dim-Anweisung.

Sie können einer Variablen als Teil der Deklaration einen Anfangswert zuweisen, wie das folgende Beispiel veranschaulicht.

Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.

Wenn es sich bei einer Variablen um eine Objektvariable handelt, können Sie explizit eine Instanz der Klasse erstellen, wenn Sie sie mithilfe des Schlüsselworts "New Operator" deklarieren, wie das folgende Beispiel veranschaulicht.

Dim f As New FileInfo("filename")

Beachten Sie, dass der in einer Deklarationsanweisung angegebene Anfangswert erst einer Variablen zugewiesen wird, wenn die Ausführung die Deklarationsanweisung erreicht. Bis zu diesem Zeitpunkt enthält die Variable den Standardwert für den Datentyp.

Ausführbare Anweisungen

Eine ausführbare Anweisung führt eine Aktion aus. Sie kann eine Prozedur aufrufen, an eine andere Stelle im Code verzweigen, mehrere Anweisungen durchlaufen oder einen Ausdruck auswerten. Eine Zuordnungsanweisung ist ein Sonderfall einer ausführbaren Anweisung.

Im folgenden Beispiel wird eine If...Then...Else Steuerelementstruktur verwendet, um verschiedene Codeblöcke basierend auf dem Wert einer Variablen auszuführen. In jedem Codeblock wird eine For...Next-Schleife eine bestimmte Anzahl von Malen ausgeführt.

Public Sub StartWidget(ByVal aWidget As widget,
    ByVal clockwise As Boolean, ByVal revolutions As Integer)
    Dim counter As Integer
    If clockwise = True Then
        For counter = 1 To revolutions
            aWidget.SpinClockwise()
        Next counter
    Else
        For counter = 1 To revolutions
            aWidget.SpinCounterClockwise()
        Next counter
    End If
End Sub

Die If Anweisung im vorherigen Beispiel überprüft den Wert des Parameters clockwise. Wenn der Wert True ist, ruft sie die spinClockwise-Methode von aWidget auf. Wenn der Wert False ist, ruft sie die spinCounterClockwise-Methode von aWidget auf. Die If...Then...Else Steuerelementstruktur endet mit End If.

Die For...Next Schleife innerhalb jedes Blocks ruft die entsprechende Methode eine Anzahl von Malen auf, die dem Wert des revolutions Parameters entspricht.

Zuweisungsanweisungen

Zuweisungsanweisungen führen Zuweisungsvorgänge durch, bei denen der Wert rechts vom Zuweisungsoperator (=) genommen und im Element auf der linken Seite gespeichert wird, wie das folgende Beispiel zeigt.

v = 42

Im vorherigen Beispiel speichert die Zuordnungsanweisung den Literalwert 42 in der Variablen v.

Berechtigte Programmierungselemente

Das Programmierelement auf der linken Seite des Zuordnungsoperators muss in der Lage sein, einen Wert anzunehmen und zu speichern. Dies bedeutet, dass es sich um eine Variable oder Eigenschaft handelt, die nicht ReadOnly ist, oder es muss sich um ein Arrayelement handelt. Im Kontext einer Zuordnungsanweisung wird ein solches Element manchmal als "lvalue" für "linker Wert" bezeichnet.

Der Wert auf der rechten Seite des Zuordnungsoperators wird durch einen Ausdruck generiert, der aus einer beliebigen Kombination aus Literalen, Konstanten, Variablen, Eigenschaften, Arrayelementen, anderen Ausdrücken oder Funktionsaufrufen bestehen kann. Im folgenden Beispiel wird dies veranschaulicht.

x = y + z + FindResult(3)

Im vorherigen Beispiel wird der Wert in der Variablen y zum Wert der Variablen z hinzugefügt, und anschließend wird der vom Aufruf der Funktion findResult zurückgegebene Wert hinzugefügt. Der Gesamtwert dieses Ausdrucks wird dann in Variable xgespeichert.

Datentypen in Zuordnungsanweisungen

Zusätzlich zu numerischen Werten kann der Zuordnungsoperator auch Werte zuweisen String , wie im folgenden Beispiel dargestellt.

Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.

Sie können auch Boolean-Werte mit einem Boolean-Literal oder einem Boolean-Ausdruck zuweisen, wie im folgenden Beispiel veranschaulicht.

Dim r, s, t As Boolean
r = True
s = 45 > 1003
t = 45 > 1003 Or 45 > 17
' The preceding statements assign False to s and True to t.

Ebenso können Sie programmierspezifischen Elementen des Char, des Date-Datentyps oder des Object-Datentyps entsprechende Werte zuweisen. Sie können einem Element, das als Klasse deklariert ist, auch eine Objektinstanz zuweisen, aus der diese Instanz erstellt wird.

Verbundzuweisungsanweisungen

Zusammengesetzte Zuordnungsanweisungen führen zunächst einen Vorgang für einen Ausdruck aus, bevor sie einem Programmierelement zugewiesen werden. Das folgende Beispiel veranschaulicht einen dieser Operatoren, +=der den Wert der Variablen auf der linken Seite des Operators um den Wert des Ausdrucks rechts erhöht.

n += 1

Im vorherigen Beispiel wird dem Wert von n 1 hinzugefügt und speichert diesen neuen Wert in n. Es handelt sich um eine Kurzform der folgenden Anweisung:

n = n + 1

Eine Vielzahl von zusammengesetzten Zuordnungsvorgängen kann mithilfe von Operatoren dieses Typs ausgeführt werden. Eine Liste dieser Operatoren und weitere Informationen zu diesen Operatoren finden Sie unter Zuordnungsoperatoren.

Der Verkettungszuweisungsoperator (&=) ist nützlich, um eine Zeichenfolge am Ende bereits vorhandener Zeichenfolgen hinzuzufügen, wie das folgende Beispiel veranschaulicht.

Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".

Typkonvertierungen in Zuordnungsanweisungen

Der Wert, den Sie einer Variablen, Eigenschaft oder einem Arrayelement zuweisen, muss einem Datentyp entsprechen, der für dieses Zielelement geeignet ist. Im Allgemeinen sollten Sie versuchen, einen Wert desselben Datentyps wie die des Zielelements zu generieren. Einige Typen können jedoch während der Zuordnung in andere Typen konvertiert werden.

Informationen zum Konvertieren zwischen Datentypen finden Sie unter Typkonvertierungen in Visual Basic. Kurz gesagt konvertiert Visual Basic automatisch einen Wert eines bestimmten Typs in einen anderen Typ, auf den er erweitert wird. Eine Erweiterungskonvertierung ist eine Konvertierung, die zur Laufzeit immer erfolgreich ist und keine Daten verliert. Visual Basic konvertiert zum Beispiel einen Integer-Wert bei Bedarf in Double, weil Integer sich auf Double erweitert. Weitere Informationen finden Sie unter Widening and Narrowing Conversions.

Eingrenzungskonvertierungen (die nicht erweitert werden) bergen das Risiko eines Fehlers zur Laufzeit oder eines Datenverlusts. Sie können eine Schmalungskonvertierung explizit mithilfe einer Typkonvertierungsfunktion ausführen, oder Sie können den Compiler auf die implizite Ausführung aller Konvertierungen verweisen, indem Sie festlegen Option Strict Off. Weitere Informationen finden Sie unter Implizite und explizite Konvertierungen.

Platzieren mehrerer Anweisungen in einer Zeile

Sie können mehrere Anweisungen auf einer einzelnen Zeile haben, die durch den Doppelpunkt (:) getrennt sind. Im folgenden Beispiel wird dies veranschaulicht.

Dim sampleString As String = "Hello World" : MsgBox(sampleString)

Obwohl es gelegentlich praktisch ist, macht diese Syntax Ihren Code schwer zu lesen und zu verwalten. Daher empfiehlt es sich, eine Anweisung pro Zeile beizubehalten.

Fortsetzen einer Anweisung über mehrere Zeilen

Eine Anweisung passt normalerweise in eine Zeile, aber wenn sie zu lang ist, können Sie sie in der nächsten Zeile fortsetzen. Dazu verwenden Sie eine Zeilenfortsetzungssequenz, die aus einem Leerzeichen gefolgt von einem Unterstrich (_) gefolgt von einem Wagenrücklauf besteht. Im folgenden Beispiel wird die MsgBox ausführbare Anweisung über zwei Zeilen fortgesetzt.

Public Sub DemoBox()
    Dim nameVar As String
    nameVar = "John"
    MsgBox("Hello " & nameVar _
        & ". How are you?")
End Sub

Implizite Zeilenfortsetzung

In vielen Fällen können Sie eine Anweisung in der nächsten aufeinander folgenden Zeile fortsetzen, ohne das Unterstrichzeichen (_) zu verwenden. Die folgenden Syntaxelemente setzen die Anweisung implizit in der nächsten Codezeile fort.

  • Nach einem Komma (,). Beispiel:

    Public Function GetUsername(ByVal username As String,
                                ByVal delimiter As Char,
                                ByVal position As Integer) As String
    
        Return username.Split(delimiter)(position)
    End Function
    
  • Nach einer geöffneten Klammer (() oder vor einer schließenden Klammer ()). Beispiel:

    Dim username = GetUsername(
        Security.Principal.WindowsIdentity.GetCurrent().Name,
        CChar("\"),
        1
      )
    
  • Nach einer öffnenden geschweiften Klammer ({) oder vor einer schließenden geschweiften Klammer (}). Beispiel:

    Dim customer = New Customer With {
      .Name = "Terry Adams",
      .Company = "Adventure Works",
      .Email = "terry@www.adventure-works.com"
    }
    

    Weitere Informationen finden Sie unter Object Initializers: Named and Anonymous Types or Collection Initializers.

  • Nach einem geöffneten eingebetteten Ausdruck (<%=) oder vor dem Schließen eines eingebetteten Ausdrucks (%>) in einem XML-Literal. Beispiel:

    Dim customerXml = <Customer>
                          <Name>
                              <%=
                                  customer.Name
                              %>
                          </Name>
                          <Email>
                              <%=
                                  customer.Email
                              %>
                          </Email>
                      </Customer>
    

    Weitere Informationen finden Sie unter Eingebettete Ausdrücke in XML (Visual Basic).

  • Nach dem Verkettungsoperator (&). Beispiel:

    cmd.CommandText = 
        "SELECT * FROM Titles JOIN Publishers " &
        "ON Publishers.PubId = Titles.PubID " &
        "WHERE Publishers.State = 'CA'"
    

    Weitere Informationen finden Sie unter Operatoren, die nach Funktionalität aufgelistet sind.

  • Nach Zuordnungsoperatoren (=, &=, :=, +=, -=, *=, /=, \=, ^=, <<=, >>=). Beispiel:

    Dim fileStream =
      My.Computer.FileSystem.
        OpenTextFileReader(filePath)
    

    Weitere Informationen finden Sie unter Operatoren, die nach Funktionalität aufgelistet sind.

  • Nach binären Operatoren (+, -, /, *, Mod, <>, <, >, <=, >=, ^, >>, <<, And, AndAlso, Or, OrElse, Like, Xor) innerhalb eines Ausdrucks. Beispiel:

    Dim memoryInUse =
      My.Computer.Info.TotalPhysicalMemory +
      My.Computer.Info.TotalVirtualMemory -
      My.Computer.Info.AvailablePhysicalMemory -
      My.Computer.Info.AvailableVirtualMemory
    

    Weitere Informationen finden Sie unter Operatoren, die nach Funktionalität aufgelistet sind.

  • Nach den Operatoren Is und IsNot. Beispiel:

    If TypeOf inStream Is 
      IO.FileStream AndAlso
      inStream IsNot
      Nothing Then
    
        ReadFile(inStream)
    
    End If
    

    Weitere Informationen finden Sie unter Operatoren, die nach Funktionalität aufgelistet sind.

  • Nach einem Mitgliedsqualifizierungszeichen (.) und vor dem Mitgliedsnamen. Beispiel:

    Dim fileStream =
      My.Computer.FileSystem.
        OpenTextFileReader(filePath)
    

    Sie müssen jedoch ein Zeilenfortsetzungszeichen (_) nach einem Elementqualifiziererzeichen verwenden, wenn Sie die With-Anweisung benutzen oder Werte in der Initialisierungsliste eines Typs angeben. Erwägen Sie, die Zeile nach dem Zuordnungsoperator (z. B. =) zu unterbrechen, wenn Sie With-Anweisungen oder Objektinitialisierungslisten verwenden. Beispiel:

    ' Not allowed:
    ' Dim aType = New With { .
    '    PropertyName = "Value"
    
    ' Allowed:
    Dim aType = New With {.PropertyName =
        "Value"}
    
    
    
    Dim log As New EventLog()
    
    ' Not allowed:
    ' With log
    '    .
    '      Source = "Application"
    ' End With
    
    ' Allowed:
    With log
        .Source =
          "Application"
    End With
    

    Weitere Informationen finden Sie unter With...End With-Anweisung und Objektinitialisierer: Benannte und anonyme Typen.

  • Nach einem XML-Achseneigenschaftsqualifizierer (., .@ oder ...). Sie müssen jedoch ein Zeilenfortsetzungszeichen (_) einschließen, wenn Sie bei Verwendung des Schlüsselworts With einen Memberqualifizierer angeben. Beispiel:

    Dim customerName = customerXml.
      <Name>.Value
    
    Dim customerEmail = customerXml...
      <Email>.Value
    

    Weitere Informationen finden Sie unter XML-Achseneigenschaften.

  • Nach einem Kleiner-als-Zeichen (<) oder vor einem Größer-als-Zeichen (>), wenn Sie ein Attribut angeben. Auch nach einem Größer-als-Zeichen (>), wenn Sie ein Attribut angeben. Sie müssen jedoch ein Zeilenfortsetzungszeichen (_) angeben, wenn Sie Attribute auf Assemblyebene oder Modulebene angeben. Beispiel:

    <
    Serializable()
    >
    Public Class Customer
        Public Property Name As String
        Public Property Company As String
        Public Property Email As String
    End Class
    

    Weitere Informationen finden Sie in der Übersicht über Attribute.

  • Vor- und nachher-Abfrageoperatoren (Aggregate, Distinct, From, Group By, Group Join, Join, Let, Order By, Select, Skip, Skip While, Take, Take While, Where, In, Into, On, Ascending und Descending). Sie können eine Zeile zwischen den Schlüsselwörtern von Abfrageoperatoren nicht trennen, die aus mehreren Schlüsselwörtern (Order By, Group Join, Take While und Skip While) bestehen. Beispiel:

    Dim vsProcesses = From proc In
                        Process.GetProcesses
                      Where proc.MainWindowTitle.Contains("Visual Studio")
                      Select proc.ProcessName, proc.Id,
                             proc.MainWindowTitle
    

    Weitere Informationen finden Sie unter "Abfragen".

  • Nach dem Schlüsselwort In in einer For Each-Anweisung. Beispiel:

    For Each p In
      vsProcesses
    
        Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}",
          p.ProcessName,
          p.Id,
          p.MainWindowTitle)
    Next
    

    Weitere Informationen finden Sie unter For Each...Next-Anweisung.

  • Nach dem Schlüsselwort From in einem Auflistungsinitialisierer. Beispiel:

    Dim days = New List(Of String) From
      {
       "Mo", "Tu", "We", "Th", "F", "Sa", "Su"
      }
    

    Weitere Informationen finden Sie unter Sammlungsinitialisierer.

Hinzufügen von Kommentaren

Quellcode ist nicht immer selbsterklärend, auch für den Programmierer, der ihn geschrieben hat. Um ihren Code zu dokumentieren, verwenden die meisten Programmierer daher liberal eingebettete Kommentare. Kommentare im Code können eine Prozedur oder eine bestimmte Anweisung für alle Benutzer erklären, die sie lesen oder später damit arbeiten. Visual Basic ignoriert Kommentare während der Kompilierung und wirkt sich nicht auf den kompilierten Code aus.

Kommentarzeilen beginnen mit einem Apostroph (') oder REM gefolgt von einem Leerzeichen. Sie können an einer beliebigen Stelle im Code hinzugefügt werden, mit Ausnahme einer Zeichenfolge. Wenn Sie einen Kommentar an eine Anweisung anfügen möchten, fügen Sie ein Apostroph oder REM nach der Anweisung ein, gefolgt von dem Kommentar. Kommentare können auch eine eigene separate Zeile verwenden. Im folgenden Beispiel werden diese Möglichkeiten veranschaulicht.

' This is a comment on a separate code line.
REM This is another comment on a separate code line.
x += a(i) * b(i) ' Add this amount to total.
MsgBox(statusMessage) REM Inform operator of status.

Überprüfen von Kompilierungsfehlern

Wenn nach der Eingabe einer Codezeile die Zeile mit einer wellenförmigen blauen Unterstreichung angezeigt wird (auch eine Fehlermeldung wird angezeigt), gibt es einen Syntaxfehler in der Anweisung. Sie müssen herausfinden, was mit der Anweisung falsch ist (indem Sie in der Aufgabenliste suchen oder mit dem Mauszeiger auf den Fehler zeigen und die Fehlermeldung lesen) und korrigieren. Bis Sie alle Syntaxfehler in Ihrem Code behoben haben, wird Ihr Programm nicht korrekt kompiliert.

Begriff Definition
Zuordnungsoperatoren Stellt Links zu Sprachreferenzseiten bereit, die Zuweisungsoperatoren wie =, *= und &= behandeln.
Operatoren und Ausdrücke Zeigt, wie Elemente mit Operatoren kombiniert werden, um neue Werte zu erzielen.
Vorgehensweise: Umbrechen und Zusammenfassen von Anweisungen in Code Zeigt, wie sie eine einzelne Anweisung in mehrere Zeilen aufteilen und wie mehrere Anweisungen in derselben Zeile platziert werden.
Vorgehensweise: Label-Anweisungen Zeigt, wie eine Codezeile bezeichnet wird.