Function: Parameterübergabe ohne das Funktion ausgeführt wird. Ist es möglich?

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von MemoAnMichSelbst.

    Function: Parameterübergabe ohne das Funktion ausgeführt wird. Ist es möglich?

    Guten Morgen VB-Freunde,

    Ist es möglich einen Parameter aus Funktion A der Funktion B zu übergeben, ohne das die gesamte Funktion B ausgeführt wird?

    Ich habe in Funktion A eine List(of String), die Einträge hat. Nun möchte ich lediglich das die Funktion B diese Liste mit den Einträgen auch hat.
    Aber die Funktion B soll noch nicht ausgeführt werden. Sie soll lediglich die Liste kennen.

    Es soll also nur eine reine Übergabe des Wertes erfolgen ohne Ausführung. Wie könnte man sowas implementieren?

    Danke für eure Hilfe!
    Gruß,
    Akki
    Danke erstmal.

    Ich bring mal ein konkretes bsp. vllt kann man es auch anders lösen:



    Siehe Code: EDIT 1:


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Dim L1 As New List(Of String)
    4. L1.Add("AAA")
    5. L1.Add("BBB")
    6. L1.Add("CCC")
    7. L1.Add("DDD")
    8. L1.Add("EEE")
    9. L1.Add("FFF")
    10. Dim i As Integer = 5
    11. End Sub
    12. Public Function F1(ByVal L1 As List(Of String), ByVal i As Integer) As Integer
    13. Dim ergebnis As Integer
    14. L1.Add("Hallo")
    15. ergebnis = i + 5
    16. F2(ergebnis, i)
    17. 'F3(L1) wie kann ich diese Liste F3 übergeben ohne das er F3 ausführt
    18. Return (i)
    19. End Function
    20. Public Function F2(ByVal ergebnis As Integer, ByVal i As Integer) As Integer
    21. Dim l As Integer = 5
    22. Dim EndSumme As Integer = 0
    23. EndSumme = ergebnis + i + l
    24. F3(EndSumme)' Der Aufruf und Ausführung soll aus F2 geschehen
    25. Return (i)
    26. End Function
    27. Public Function F3(ByVal l1 As List(Of String), ByVal EndSumme As Integer) As Integer 'F3 benötigt zwei werte aus zwei versch. Funktionen
    28. 'Ich brauche die Liste, da hier damit weiter gearbeitet werden soll.
    29. l1.Add("geschafft")
    30. l1.Add("123")
    31. Debug.WriteLine("SUMME von i=" & i)
    32. Return (i)
    33. End Function
    34. End Class



    Die Funktion F3 benötigt sowohl die Liste als auch die Integervariable als Übergabeparameter.
    Da F2 nur die Integervariable beim aufruf übergibt und die Liste überhaupt nicht benötigt wollte ich das die funktion F1 nur die Liste übergibt aber der aufruf von F3 soll erst in F2 erfolgen. Die funktion F3 braucht zwei werte diese kommen jedoch aus unterschiedlichen Funktionen, aber der Aufruf von F3 und Ausführung des codes SOLL erst in F2 erfolgen vorher.Ich hoffe das bsp. verdeutlicht nochmal mein Anliegen.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Akki“ ()

    Gib Deinem Projekt zunächt Option Strict On,
    dann reden wir weiter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Kompiliert das bei Dir :?:
    Bilder
    • Fehler.jpg

      29,61 kB, 847×173, 99 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. 'Option Strict On
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim L1 As New List(Of String)
    5. L1.Add("AAA")
    6. L1.Add("BBB")
    7. L1.Add("CCC")
    8. L1.Add("DDD")
    9. L1.Add("EEE")
    10. L1.Add("FFF")
    11. Dim i As Integer = 5
    12. F1(L1, i)
    13. End Sub
    14. Public Function F1(ByVal L1 As List(Of String), ByVal i As Integer) As Integer
    15. Dim ergebnis As Integer
    16. L1.Add("Hallo")
    17. ergebnis = i + 5
    18. F2(ergebnis, i)
    19. 'F3(L1)' Wie soll der die Übergabe der Liste folgen ohne dabei F3 auszuführen, d.h die Liste soll F3 kennen um arbeiten zu können
    20. Return (i)
    21. End Function
    22. Public Function F2(ByVal ergebnis As Integer, ByVal i As Integer) As Integer
    23. Dim l As Integer = 5
    24. Dim EndSumme As Integer = 0
    25. EndSumme = ergebnis + i + l
    26. 'F3(EndSumme)' Hier soll der aufruf von F3 und die Ausführung stattfinden
    27. Return (i)
    28. End Function
    29. Public Function F3(ByVal l1 As List(Of String), ByVal i As Integer) As Integer' F3 erwartet 2 Parameter aus 2 verschiedenen Funktionen
    30. l1.Add("geschafft")
    31. l1.Add("ich weiß wie es geht")
    32. Debug.WriteLine("SUMME von i=" & i)
    33. Return (i)
    34. End Function
    35. End Class
    Vielleicht solltest das auch mal nicht auskommentieren XD
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Du sollst es doch einbauen und erstmal die Fehler beheben... Bevor du anfängst weiter zu basteln oO
    Du baust dir so doch nur nen riesen Berg an Fehlern, die dir nicht auffallen, weil das System nicht meckert... Aber sie sind doch weiter da und du hast eine falsche/fehlerhafte Sicht auf das, was du tust und tun willst...

    Darum geht es doch.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Dann nimm die List als Private in die Klasse:

    VB.NET-Quellcode

    1. Private L1 As New List(Of String)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hab immer noch keinen Schimmer was du willst ... (Code sinnlos!)

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim L1 As New List(Of String)


    wird zu

    VB.NET-Quellcode

    1. Private L1 as List(Of String)
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. L1 = New List(Of String)
    4. F1(i)
    5. F2(i)
    6. F3(i)
    So, ich versteh den Sinn noch immer nicht?!
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D