Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie eine Sub
- oder eine Function
-Prozedur aufrufen, können Sie Argumente nach Position übergeben, in der Reihenfolge, in der sie in der Definition der Prozedur angezeigt werden, oder Sie können sie nach Namen übergeben, ohne Rücksicht auf die Position.
Wenn Sie ein Argument anhand des Namens übergeben, geben Sie den deklarierten Namen des Arguments gefolgt von einem Doppelpunkt und einem Gleichheitszeichen (:=
) gefolgt vom Argumentwert an. Sie können benannte Argumente in beliebiger Reihenfolge angeben.
Die folgende Sub
Prozedur verwendet beispielsweise drei Argumente:
Public Class StudentInfo
Shared Sub Display(name As String,
Optional age As Short = 0,
Optional birth As Date = #1/1/2000#)
Console.WriteLine($"Name = {name}; age = {age}; birth date = {birth:d}")
End Sub
End Class
Wenn Sie diese Prozedur aufrufen, können Sie die Argumente nach Position, nach Name oder in Kombination aus beidem angeben.
Übergeben von Argumenten nach Position
Sie können die Display
Methode mit ihren Argumenten aufrufen, die nach Position übergeben und durch Kommas getrennt werden, wie im folgenden Beispiel gezeigt:
StudentInfo.Display("Mary", 19, #9/21/1998#)
Wenn Sie ein optionales Argument in einer Positionsargumentliste weglassen, müssen Sie dessen Position mit einem Komma halten. Im folgenden Beispiel wird die Display
Methode ohne das age
Argument aufgerufen:
StudentInfo.Display("Mary",, #9/21/1998#)
Übergeben von Argumenten nach Name
Alternativ können Sie Display
mit Argumenten aufrufen, die nach Namen übergeben werden und ebenfalls durch Kommas getrennt sind, wie im folgenden Beispiel gezeigt.
StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")
Das Übergeben von Argumenten durch Angabe des Namens ist besonders nützlich, wenn Sie eine Prozedur aufrufen, die mehr als ein optionales Argument hat. Wenn Sie Argumente nach Namen angeben, müssen Sie keine aufeinander folgenden Kommas verwenden, um fehlende Positionsargumente anzugeben. Durch das Übergeben von Argumenten anhand des Namens können Sie auch leichter nachverfolgen, welche Argumente Sie übergeben und welche Argumente Sie weglassen.
Mischen von Argumenten nach Position und nach Name
Sie können Argumente sowohl nach Position als auch nach Name in einem einzelnen Prozeduraufruf bereitstellen, wie im folgenden Beispiel gezeigt:
StudentInfo.Display("Mary", birth:=#9/21/1998#)
Im vorherigen Beispiel ist kein zusätzliches Komma erforderlich, um die Stelle des ausgelassenen age
Arguments zu kennzeichnen, da birth
als Namensargument übergeben wird.
Wenn Sie in Versionen von Visual Basic vor 15.5 Argumente durch eine Mischung aus Position und Name angeben, müssen alle Positionsargumente zuerst verwendet werden. Nachdem Sie ein Argument nach Name angegeben haben, müssen alle verbleibenden Argumente nach Name übergeben werden. Der folgende Aufruf der Display
Methode zeigt beispielsweise den Compilerfehler BC30241 an: Benanntes Argument erwartet.
StudentInfo.Display("Mary", age:=19, #9/21/1998#)
Ab Visual Basic 15.5 können positionelle Argumente auf benannte Argumente folgen, wenn sich die abschließenden positionellen Argumente an der richtigen Position befinden. Wenn unter Visual Basic 15.5 kompiliert wird, wird der vorherige Aufruf der Display
Methode erfolgreich kompiliert und generiert keinen Compilerfehler mehr BC30241.
Diese Möglichkeit, benannte und positionale Argumente in beliebiger Reihenfolge zu kombinieren und abzugleichen, ist besonders nützlich, wenn Sie ein benanntes Argument verwenden möchten, um den Code besser lesbar zu machen. Der folgende Person
Klassenkonstruktor erfordert beispielsweise zwei Argumente vom Typ Person
, die beide sein Nothing
können.
Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)
Die Verwendung gemischter benannter und positionaler Argumente trägt dazu bei, die Absicht des Codes deutlich zu machen, wenn der Wert der father
Argumente lautet mother
Nothing
:
Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)
Um positionsbezogenen Argumenten mit benannten Argumenten zu folgen, müssen Sie das folgende Element zur Visual Basic-Projektdatei (*.vbproj) hinzufügen:
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Weitere Informationen finden Sie unter Festlegen der Visual Basic-Sprachversion.
Einschränkungen beim Bereitstellen von Argumenten nach Namen
Sie können Argumente nicht nach Name übergeben, um die Eingabe erforderlicher Argumente zu vermeiden. Sie können nur die optionalen Argumente weglassen.
Sie können ein Parameterarray nicht nach Name übergeben. Dies liegt daran, dass Beim Aufrufen der Prozedur eine unbegrenzte Anzahl kommagetrennter Argumente für das Parameterarray angegeben wird, und der Compiler kann nicht mehr als ein Argument einem einzelnen Namen zuordnen.