vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: ByVal verstehe ich nicht genau 
Autor: Manfred X
Datum: 17.11.13 19:09

"ByVal" legt fest, wie ein Parameter an eine Methode übergeben wird.
Dabei spielt es keine Rolle ob diese Methode (z.B. ein Konstruktor)
in einer Structure oder einer Class deklariert ist.

"ByVal" ist die Standard-Einstellung, muß also im Code nicht geschrieben werden.

Von Bedeutung ist in diesem Zusammenhang nur, von welchem Datentyp der
zu übergebende PARAMETER ist.

In Deinem Beispiel übergibst Du bei allen Parametern den Datentyp Byte
(d.h. eine Structure = WertTyp).

Bei einer Variable vom Werttyp, die als "Byval"-Parameter an eine Methode
übergeben worden ist, wird eine lokale Kopie dieses Wertes erstellt.
Änderungen des Wertes der Variable innerhalb der Methode wirken sich
NICHT auf den Wert der Variable im rufenden Programm aus.
(Bei Verwendung von "ByRef" würde sich der Wert dort ebenfalls ändern.)

Bei einer Variable vom Referenztyp (Klasse) bestimmt "ByVal", das eine
lokale Kopie der Zugriffsvariable auf die Klasseninstanz erstellt wird,
die Klasseninstanz wird aber an die Methode als Referenz übergeben.
Falls Eigenschaften (Properties) der Klassen-Instanz in der gerufenen
Methode geändert werden, sind sie das deshalb AUCH AUSSERHALB der
gerufenen Methode.

Diese Kombination von "Wertübergabe" (lokale Kopie) der Instanz-
Zugriffsvariable und Referenzübergabe der Klasseninstanz bei Nutzung
von "ByVal" wird oft nicht richtig verstanden.
Um auch eine lokale Kopie der Klasseninstanz zu erhalten, muß explizit
ein Klon erstellt werden.

Um die Sache noch verwirrender zu machen, kann man bei Nutzung von
Methoden mit "Byref"-Parametern sich im rufenden Programmmteil gegen
Änderungen der übergebenen Variable "schützen", indem man sie beim
Aufruf der Methode in Klammern setzt.
Allerdings möchte man im rufenden Programm meist schon erfahren, welcher
Wert im "ByRef"-Parameter nach Ausführung der Methode enthalten ist
(=Rückgabe-/Ergebnis-Parameter).

Beitrag wurde zuletzt am 17.11.13 um 19:28:27 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ByVal verstehe ich nicht genau1.078Moglie16.11.13 15:09
Re: ByVal verstehe ich nicht genau803Manfred X16.11.13 16:45
Re: ByVal verstehe ich nicht genau750Moglie17.11.13 17:52
Re: ByVal verstehe ich nicht genau747Manfred X17.11.13 19:09
Kleines Beispiel zu ByVal und ByRef756Manfred X17.11.13 19:54

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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