Gegenseitiges Überladen von Enum und Structure

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Wincrash.

    Gegenseitiges Überladen von Enum und Structure

    *Sorry, dass mir kein gescheiter Titel eingefallen ist*

    Hi Leute,

    <rethorische Frage>Ihr kennt ja alle bestimmt die System.Drawing.Color-Structure?</rethorische Frage>
    In diesem gibt es zum einem die Struktur Color und lauter Kostanten mit dem selben Namen wie die Propertys innerhalb der Color-Structure (-> Ich tippe daher auf ein Enum mit dem selben Namen wie die Strukur).

    IlSpy dagegen zeigt mir weder Konstanten in der Color-Struktur noch eine Enumeration mit dem Namen "Color" im System.Drawing-Namespace.

    Mein Ziel: Ich arbeite gerade an einer Art GolfSpiel-Simulator und ich habe ein Enum mit verschiedenen Golfschlägern. Ich habe aber auch eine Struktur mit dem selben Namen wie die Enumeration.

    Wie kann ich die beiden Elemente gegenseitig überladen lassen?
    (Ich weiß leider nicht, wie ich das beschreiben soll :) )

    Vielen Dank,
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.

    Wincrash schrieb:

    Ich weiß leider nicht, wie ich das beschreiben soll
    Mach mal ein Beispiel, wie Du es aufzurufen gedenkst.
    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!
    Meinst Du so was hier:

    VB.NET-Quellcode

    1. Public Enum Golfschläger
    2. Holz1
    3. Holz2
    4. Holz3
    5. End Enum
    6. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    7. Dim g As Golfschläger = Golfschläger.Holz3
    8. End Sub
    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!
    Ich vermute der TE meint, dass es auch eine Structure gibt die so heißt (Golfschläger).
    Wenn dem so sein sollte, ist das nicht möglich mit gleichen Namen. Du kannst aber für die Sturcutre einen anderen Namen verwenden, jedoch im Konstruktur einen Parameter des Enum angeben.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    fichz schrieb:

    Ich vermute der TE meint
    Du Glücklicher. :D
    Ich hab noch keine Vermutung. :S
    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!
    Sorry, dass ich so lange off war

    Ja - ich weiss, dass mein problem sehr schlecht erklärt habe :D
    Beim Post #5 sieht man in den beiden Bildern, die RodFromGermany angehängt hat, dass die Member vom Enum "Golfschläger" (Enum-)Konstanten sind.
    Bei meinem ersten Post sieht man in der unteren Hälfte des Bildes dagegen, dass die Member von "Color" Properties sind. Demnach müssen also ein Enum namens "Color" und eine Struktur namens "Color" vorhanden sein.


    Ich möchte das selbe machen, d.h. dass man als Wert bei einem Ausdruck entweder meine Struktur namens "Golfschäger" oder mein Enum namens "Golfschäger" verwenden kann.

    Ich hoffe, dass diese erklärung [ein bisschen] besser war - wenn nicht, dann ruhig sagen :D
    Viele Grüße,
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.
    @Wincrash:: Dann empfinde Deine Lösung der Color-Struktur nach:

    VB.NET-Quellcode

    1. Public Structure Golfschläger
    2. Private Value As Integer
    3. Private Sub New(value As Integer)
    4. Me.Value = value
    5. End Sub
    6. Public Shared ReadOnly Property Holz1() As Golfschläger
    7. Get
    8. Return New Golfschläger(1)
    9. End Get
    10. End Property
    11. Public Shared ReadOnly Property Holz2() As Golfschläger
    12. Get
    13. Return New Golfschläger(2)
    14. End Get
    15. End Property
    16. Public Shared ReadOnly Property Holz3() As Golfschläger
    17. Get
    18. Return New Golfschläger(3)
    19. End Get
    20. End Property
    21. End Structure
    22. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    23. Dim g As Golfschläger = Golfschläger.Holz3
    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!

    Wincrash schrieb:

    Demnach müssen also ein Enum namens "Color" und eine Struktur namens "Color" vorhanden sein.
    Da kannst du noch lange drüber rätseln. :P

    Du könntest aber auch zB die Color.AliceBlue im ObjectBrowser anwählen, und einen Screenshot davon anhängen, wo man die Zusammenfassung davon lesen kann.
    Daran sollte sich das Rätsel aufklären lassen.
    @ErfinderDesRades: Daran hätte ich gleich denken sollen... :D
    Ich frage mich dann immer noch, wieso mir beim Tippen von Dim c As Color = dann dieses Icon angezeigt wird:

    Ich werde dann die Lösung aus Post #10 nehmen...
    Trotzdem vielen Dank an alle
    Viele Grüße,
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.