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 ein oder mehrere Argumente an eine Prozedur übergeben, entspricht jedes Argument einem zugrunde liegenden Programmierelement im aufrufenden Code. Sie können entweder den Wert dieses zugrunde liegenden Elements oder einen Verweis darauf übergeben. Dies wird als Übergabemechanismus bezeichnet.
Übergeben als Wert
Sie übergeben ein Argument als Wert, indem Sie das ByVal-Schlüsselwort für den entsprechenden Parameter in der Prozedurdefinition angeben. Wenn Sie diesen Übergabemechanismus verwenden, kopiert Visual Basic den Wert des zugrunde liegenden Programmierelements in eine lokale Variable in der Prozedur. Der Prozedurcode hat keinen Zugriff auf das zugrunde liegende Element im aufrufenden Code.
Übergeben durch Verweis
Sie übergeben ein Argument nach Verweis , indem Sie das ByRef-Schlüsselwort für den entsprechenden Parameter in der Prozedurdefinition angeben. Wenn Sie diesen Übergabemechanismus verwenden, gibt Visual Basic der Prozedur einen direkten Verweis auf das zugrunde liegende Programmierelement im aufrufenden Code.
Übertragungsmechanismus und Elementtyp
Die Auswahl des Übergabemechanismus entspricht nicht der Klassifizierung des zugrunde liegenden Elementtyps. Die Übergabe durch Wert oder durch Referenz bezieht sich darauf, was Visual Basic dem Prozedurcode übergibt. Ein Werttyp oder Bezugstyp bezieht sich auf die Speicherung eines Programmierelements im Arbeitsspeicher.
Der Übergabemechanismus und der Elementtyp sind jedoch miteinander verknüpft. Der Wert eines Bezugstyps ist ein Zeiger auf die Daten an anderer Stelle im Arbeitsspeicher. Dies bedeutet, dass der Prozedurcode, wenn Sie einen Verweistyp nach Wert übergeben, einen Zeiger auf die Daten des zugrunde liegenden Elements hat, auch wenn er nicht auf das zugrunde liegende Element selbst zugreifen kann. Wenn es sich bei dem Element beispielsweise um eine Arrayvariable handelt, hat der Prozedurcode keinen Zugriff auf die Variable selbst, kann aber auf die Arrayelemente zugreifen.
Möglichkeit zum Ändern
Wenn Sie ein nicht modifizierbares Element als Argument übergeben, kann die Prozedur es niemals im aufrufenden Code ändern, unabhängig davon, ob es übergeben ByVal
wird.ByRef
Bei einem modifizierbaren Element fasst die folgende Tabelle die Interaktion zwischen dem Elementtyp und dem Übergabemechanismus zusammen.
Elementtyp |
ByVal übergeben |
ByRef übergeben |
---|---|---|
Werttyp (enthält nur einen Wert) | Die Prozedur kann die Variable oder eines seiner Member nicht ändern. | Die Prozedur kann die Variable und ihre Mitglieder ändern. |
Bezugstyp (enthält einen Zeiger auf eine Klasse oder Strukturinstanz) | Die Prozedur kann die Variable nicht ändern, aber Elemente der Instanz ändern, auf die sie verweist. | Die Prozedur kann die Variable und die Mitglieder der Instanz ändern, auf die sie verweist. |
Siehe auch
- Vorgehensweisen
- Parameter und Argumente von Prozeduren
- Vorgehensweise: Übergeben von Argumenten an eine Prozedur
- Übergeben von Argumenten nach Wert und nach Verweis
- Unterschiede zwischen modifizierbaren und nicht modifizierbaren Argumenten
- Vorgehensweise: Ändern des Werts eines Prozedurarguments
- Vorgehensweise: Schützen eines Prozedurarguments vor Wertänderungen
- Vorgehensweise: Erzwingen, dass ein Argument als Wert übergeben wird
- Übergeben von Argumenten nach Position und nach Name
- Werttypen und Verweistypen