Klassen-Programmierung: Properties



  • Hi Leute!
    Ich hab mal wieder eine Frage, die diesmal wohl für viele zum Alltag gehört.
    In der Klasse System.Windows.Forms.ListView ist ein Property vorhanden namens Items.
    Dieses Propertie enthällt eine Sammlung. Der Sammlung kann man z.B. so ein Element hinzufügen:

    listView1.Items.Add()
    

    Oder so, auf vorhandenes Element zugreifen:

    listView1.Items[2].Checked
    

    Wie kann man soetwas in einer Klasse machen?
    Also einmal mehrere Funktionen und Properties unter einem anderem Propertie gruppieren usw.



  • Da steckt nicht viel geheimnisvolles dahinter. "Items" ist ein Property, aber nicht irgendwie mit Typ int oder sowas, sondern von einer Klasse, die selber wieder ne Menge Methoden hat. Zum Beispiel die Methoden Add() oder this[int].

    Wenn du listView1.Items schreibst, kriegst du ein komplexes Objekt, an dem du wiederum beispielsweise Add() aufrufen kannst. Das Add() gehört also eigentlich gar nicht zum Property, sondern zu der Collection, die du vom Property kriegst.



  • Ah Verstehe, dann werd ich mal in diese Richtung "experimentieren". Fürs erste danke.



  • Gut soweit alles kein Problem. Nur eine Sache hast du leider nicht genauer erwähnt: Wie kann ich bewerkstelligen, dass ich auf ein bestimmtes Element per z.B.:

    listView1.Items[x]
    

    zugreifen kann? Ist das irgendetwas bestimmtes mit dem Konstruktor, oder wie kann ich mir das vorstellen?



  • Das ist der Indexer this[int index] des Objekts, dass du vom Property kriegst (gehört also wie Add() auch zum Property-Typ) Dazu musst du dir mal die Indexer ansehen, sobald du die Properties kapiert hast. Properties und Indexer sind sowieso ziemlich ähnlich, nur dass der Indexer noch Parameter nehmen kann.

    Vorstellen kannst du dir den Indexer als Get-Methode mit Parametern, so wie ein Property eine Get-Methode ohne Parameter ist.



  • Vielen Dank! Von Indexern hatte ich noch nix gehört! Gute Antworten *lob* 🙂 👍


Anmelden zum Antworten