List mit Eigenen Klassen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    List mit Eigenen Klassen

    Hallo Leute,
    ich habe mich mal ein bisschen mit objektorientierung beschäftigt und eigenen Klassen.
    Hab jetzt aber ein Problem beim auslesen eines Wertes aus meiner eigenen Klasse:

    VB.NET-Quellcode

    1. Public Class MyClass
    2. Private ID As String
    3. Private x, y As Integer
    4. Public Sub New(ByVal _ID As String, ByVal _Type As String, ByVal _PosX As Integer, ByVal _PosY As Integer)
    5. x = _x
    6. y = _y
    7. ID = _ID
    8. End Sub
    9. Public Function getX() As Integer
    10. Return x
    11. End Function
    12. Public Function getY() As Integer
    13. Return y
    14. End Function
    15. Public Function getID() As String
    16. Return ID
    17. End Function
    18. Public Sub Clear()
    19. ID = Nothing
    20. i1 = -1
    21. i2 = -1
    22. End Sub


    ^^Klasse

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim l as List(of MyClass)
    3. Private Sub BotForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. l.Add(New MyClass("111", 1, 2))
    5. End Sub
    6. Private Sub StartToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    7. For i as Integer = 0 to l.Count - 1
    8. Label1.Text = l(i).getID
    9. Label2.Text = l.(i).getX
    10. Label3.Text = l.(i).getY
    11. Next
    12. End Sub


    Und in den Labeln erscheint nichts... Das war jetzt wieder mal ein Beispiel code, aber ungefähr so ist es richtig.
    Eigentlich zeichen ich aus den X & Y werten per GDI aber da kommt dann ja das bekannte rote kreuz...
    Hab es auch schon mit anderen Werten versucht geht aber nicht. Und es wäre echt sehr deprimierend wenn alle Klassen fasch wären, da ich bereits 10 stück fertig habe... ;)

    Gruß und danke
    Klenix

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

    VB.NET-Quellcode

    1. For i as Integer = 0 to l.Count - 1
    2. Dim MC as MyClass = l(i)
    3. Label1.Text = MC.getID
    4. Label2.Text = MC.getX
    5. Label3.Text = MC.getY
    6. Next

    geht natürlisch auch mitner ForEach-Schleife

    Mit deiner Variante Label1.Text = l.MyClass(i).getID sprichst du nicht die in deiner List(of T) gespeicherte Instanz deiner Klasse, sondern die Klasse an. Darum is da nix... Nothing...
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Ich hab am ende mehrere Klassen, da is net nur eine. Die anzahl der Klassen kann zwischen 0 und 100 liegen also wäre es zu lästig so viele klassen Deklarationen zu machen, sowieso braucht des unnötig speicher so viele...

    ThuCommix schrieb:

    Was soll die List(Of Myclass) bringen?
    ... Kaffee??

    Hallo TE,
    du mußt unterscheiden zwischen Klasse (Sandform) und Objekt (Kuchen). Du benutzt EINE Sandform um BELIBIG VIELE Kuchen zu erzeugen. Du speicherst also keine Klasse in deiner Liste, sondern die damit erzeugten Objekte vom Typ MyClass. In einer List(Of T) kannst du auch nur Objekte eines Typs speichern, also viele Objekte vom Typ MyClass. Es sei denn, du hast weitere Klassen MC1, MC2 usw. die von MyClass erben. Dann sind auch die im Grunde MyClass-Objekte und können ebenfalls in die Liste gapackt werden.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    naja, verstanden hab ich das ^^ nicht
    Na, denn ist ja gut.



    Klenix schrieb:

    da war en fehler drinne, das war wieder mal en code halb aus dem kopf, ich schreib hier immer nur wenn mein VB abkackt und ich nichts besseres zu tun hab ;)
    Lass uns das in Zukunft gleich zu Anfang wissen - dann denkt man nicht über Sachen nach, die sich hinterher als völlig irrelevant erweisen.