Funktion variable Parameter

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Funktion variable Parameter

    Hallo zusammen,

    ich würde gerne eine Funktion erstellen in der ich ein Enum als Parameter übergebe und in Abhängigkeit des ausgewählten Wertes der Enum müssten weitere und jeweils andere Parameter mit übergeben werden.

    Ist sowas irgendwie möglich?

    Hier mal der Versuch eines beispiels:

    VB.NET-Quellcode

    1. public enum typ
    2. typ1 = 0
    3. typ2 = 1
    4. end enum
    5. public enum untertyp1
    6. ut1 = 0
    7. ut2 = 1
    8. end enum
    9. public enum untertyp2
    10. ut1 = 0
    11. ut2 = 1
    12. end enum
    13. ' Basisfunktion
    14. function test ( byval typen as typ) as boolean
    15. end function


    Jenachdem welchen Typ ich beim Aufruf der Funktion auswähle, sollen dann andere Parameter zur Auswahl zur verfügung stehen.

    VB.NET-Quellcode

    1. ' auswahl Typ 1, es können jetzt noch Untertypen des Types 1 ausgewählt werden
    2. test(typ1, untertypen1)
    3. ' auswahl Typ 2, es können jetzt noch Untertypen des Types 2 ausgewählt werden
    4. test(typ2, untertypen2)


    Ich hoffe ihr könnt mir helfen?

    Gruß
    hi,
    ja an die zwei Varianten hatte ich auch schon gedacht, es soll aber jenachdem welcher Typ bei enum1 ausgewählt wurde nur die zugehörigen auswählmöglichkeiten für den parameter 2 zur verfügung stehen. Und das sind jeweils andere.

    Auswahl Typ 1 -> auswahl Untertypen 1
    Auswahl Typ 2 -> auswahl Untertypen 2
    da untertypen 1 und 2 verschiedene Datentypen (in dem Fall enums) sind würde sich meine Variante anbieten. Auswahl Typ 1 und 2 wird es dann nur nicht geben, da man sie nicht braucht. Sie tun ja auch nichts anderes als die nachfolgevariable zu identifizieren - und das kann die IDE mittels überladungen viel besser bzw nur so. AFAIK geht es nicht, dass du in der IDE andere parameter aufgetischt bekommst nur weil ein Parameter einen bestimmten zustand hat => der weg über Überladungen ist der einzige.

    Einen Parameter-Array könnte vllt nützlich werden, passt aber nicht so recht zu deinem Problem. Gibt es einen Gegengrund der dafür spricht keine Überladungen zu benutzen?
    Du kannst doch den 2. Parameter als Object übergeben und ihn dann je nach dem Enum in den richtigen Typ per DirectCast() konvertieren.
    Ob das allerdings viel Sinn macht, bezweifle ich.
    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!