vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Variablen & Strings01.04.02
ByVal oder ByRef ?

VB-Version:  VB5, VB6
 Views:  36.310 

Was bedeuten die Schlüsselwörter ByVal und ByRef?

ByVal legt fest, dass ein Argument als Wert übergeben wird, d. h. der Wert eines Arguments wird an eine Prozedur oder Funktion anstelle der Adresse übergeben. Dadurch kann die Prozedur auf ein Kopie der Variablen zugreifen. Das bedeutet, dass der aktuelle Wert der Variablen nicht von der Prozedur verändert werden kann, an die er übergeben wird.

ByRef legt fest, dass das Argument als Verweis übergeben wird, d. h. die Adresse eines Arguments wird an eine Prozedur oder Funktion anstelle des Werts übergeben. Dadurch kann die Prozedur auf die tatsächliche Variable zugreifen. Das bedeutet, dass der aktuelle Wert der Variablen von der Prozedur geändert werden kann, an die er übergeben wird. Wenn nichts anderes angegeben wird, werden Argumente als Referenz übergeben, da ByRef der Standardwert in Visual Basic ist.

Um das auszuprobieren, starten Sie ein neues Projekt und platzieren auf der Form 2 CommandButtons, die Sie wie folgt benennen: Name = Command1, Caption = ByRef, Name = Command2, Caption = ByVal. Dann noch folgender Code:

' Parameterübergabe ByRef
Function RechneA(x As Long, y As Long) As Long
  RechneA = (x + y)
  x = x + 1
End Function
 
Private Sub Command1_Click()
  Dim x As Long, y As Long
  x = 5
  y = 6
  MsgBox RechneA(x, y)
  MsgBox x
End Sub

In diesem Beispiel wird durch ByRef die Variable selbst übergeben. Als Ergebnis wird angezeigt: 11 und 6. Die Funktion hat durch ByRef die übergebene Variable verändert, was mit ByVal nicht passiert wäre.

' Parameterübergabe ByVal
Function RechneB(ByVal x As Long, ByVal y As Long) As Long
  RechneB = (x + y)
  x = x + 1
End Function
 
Private Sub Command2_Click()
  Dim x As Long, y As Long
  x = 5
  y = 6
  MsgBox RechneB(x, y)
  MsgBox x
End Sub

In diesem Beispiel wird durch ByVal nur der Wert übergeben: 5 und 6. Als Ergebnis wird angezeigt: 11 und 5.

Diese Seite wurde bereits 36.310 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel