Freigeben über


Unterschiede zwischen dem Übergeben von Argumenten als Wert und als Verweis (Visual Basic)

Wenn Sie einer Prozedur ein oder mehrere Argumente übergeben, ist jedes Argument einem zugrunde liegenden Programmierelement im Aufrufcode zugeordnet. Sie können entweder den Wert dieses zugrunde liegenden Elements oder einen Verweis darauf übergeben. Dies wird als Übergabemechanismus bezeichnet.

Übergabe als Wert

Sie übergeben ein Argument als Wert, indem Sie das ByVal (Visual Basic)-Schlüsselwort für den entsprechenden Parameter in der Prozedurdefinition angeben. Bei Verwendung dieses Übergabemechanismus kopiert Visual Basic den Wert des zugrunde liegenden Programmierelements in eine lokale Variable der Prozedur. Der Prozedurcode hat keinen Zugriff auf das zugrunde liegende Element im Aufrufcode.

Übergabe als Verweis

Sie übergeben ein Argument als Verweis, indem Sie das ByRef (Visual Basic)-Schlüsselwort für den entsprechenden Parameter in der Prozedurdefinition angeben. Bei Verwendung dieses Übergabemechanismus übergibt Visual Basic im Aufrufcode einen direkten Verweis auf das zugrunde liegende Programmierelement an die Prozedur.

Übergabemechanismus und Elementtyp

Die Auswahl des Übergabemechanismus ist nicht das Gleiche wie die Klassifizierung des zugrunde liegenden Elementtyps. Die Übergabe als Wert oder als Verweis bezieht sich darauf, was Visual Basic für den Prozedurcode bereitstellt. Ein Werttyp oder ein Verweistyp verweist darauf, wie ein Programmierelement im Arbeitsspeicher gespeichert wird.

Es besteht jedoch ein Zusammenhang zwischen Übergabemechanismus und Elementtyp. Der Wert eines Verweistyps ist ein Zeiger auf die Daten, die sich an einer anderen Position im Arbeitsspeicher befinden. Das bedeutet, dass der Prozedurcode bei der Übergabe eines Referenztyps als Wert über einen Zeiger auf die Daten des zugrunde liegenden Elements verfügt, auch wenn er nicht auf das zugrunde liegende Programmierelement selbst zugreifen kann. Wenn das Element beispielsweise eine Arrayvariable ist, hat der Prozedurcode keinen Zugriff auf die eigentliche Variable, aber er kann auf die Arraymember zugreifen.

Änderungsmöglichkeit

Ein als Argument übergebenes nicht veränderbares Element kann von der Prozedur nie im Aufrufcode geändert werden. Dabei spielt es keine Rolle, ob es mit ByVal oder ByRef übergeben wurde.

In der folgenden Tabelle wird die Interaktion zwischen dem Elementtyp und dem Übergabemechanismus bei änderbaren Elementen dargestellt.

Elementtyp

Übergabe mit ByVal

Übergabe mit ByRef

Werttyp (enthält nur einen Wert)

Die Variable und ihre Member können in der Prozedur nicht geändert werden.

Die Variable und ihre Member können in der Prozedur geändert werden.

Verweistyp (enthält einen Zeiger auf eine Klassen- oder Strukturinstanz)

Die Prozedur kann die Variable nicht ändern, jedoch die Member der Instanz, auf die sie zeigt.

Die Variable und die Member der Instanz, auf die sie zeigt, können in der Prozedur geändert werden.

Siehe auch

Aufgaben

Gewusst wie: Übergeben von Argumenten an eine Prozedur (Visual Basic)

Gewusst wie: Ändern des Werts eines Prozedurarguments (Visual Basic)

Gewusst wie: Schützen eines Prozedurarguments gegen Wertänderungen (Visual Basic)

Gewusst wie: Erzwingen, dass ein Argument als Wert übergeben wird (Visual Basic)

Konzepte

Prozeduren in Visual Basic

Parameter und Argumente von Prozeduren (Visual Basic)

Übergeben von Argumenten als Wert und als Verweis (Visual Basic)

Unterschiede zwischen veränderbaren und nicht veränderbaren Argumenten (Visual Basic)

Übergeben von Argumenten nach Position und Name (Visual Basic)

Weitere Ressourcen

Datentypimplementierung (Visual Basic)