ByVal Bedeutung/Verwendung

  • Allgemein

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von yeti2078.

    ByVal Bedeutung/Verwendung

    Hallo,
    Ich hab ne frage, und zwar: Was bringt ByVal im Source code? Ich sehe das immer bei meinen Programmen und da ich es hasse code in einem programm zu haben den ich selbst nicht verstehe, würde ich gerne die Bedeutung/Funktion/Verwendung wissen.
    ByVal beschreibt wie bei einem Funktionsaufruf der Parameter übergeben wird.
    Dafür gibt es zwei Möglichkeiten: ByVal (für "By Value") und ByRef (für "By Reference").

    Beispielcode:

    VB.NET-Quellcode

    1. ' mit ByVAL
    2. Sub f_val (ByVal x as Integer)
    3. x = x*x
    4. End Sub
    5. ' mit ByREF
    6. Sub f_ref (ByRef x as Integer)
    7. x = x*x
    8. End Sub


    Wird ein Parameter mit ByVal übergeben so wird innerhalb der Funktion eine "Kopie" von ihm erstellt.
    Das heißt, was auch immer die Funktion mit dieser Kopie macht, es hat keinen Effekt auf die eigentlich übergebene Variable:

    VB.NET-Quellcode

    1. Dim num as Integer = 10
    2. f_val(num)
    3. ' num bleibt 10 und ist _nicht_ 100



    Wird ein Parameter allerdings mit ByRef übergeben so wird der Parameter direkt übergeben.
    Das heißt, wenn die Funktion ihn verändert, betrifft es die eigentlich übergebene Variable:

    VB.NET-Quellcode

    1. Dim num as Integer = 10
    2. f_ref(num)
    3. ' num wurde direkt von f_ref verändert und ist jetzt 100




    Das war aber erst mal nur die halbe Wahrheit, denn das alles gilt nur für primitive Datentypen, also zB. Integer, Single oder auch String.
    Wenn Referenztypen, also Klassen, Arrays,... (also eigentlich alles wofür man ein "New" braucht), übergeben werden, wird bei ByRef und bei ByVal der übegebene Parameter direkt verändert.
    Wenn dich das näher interessiert dann google mal nach "Stack" und "Heap" und "Zeiger".