Autor Beitrag
Hurricane
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 21.04.12 18:54 
Hallo Leute,

bezüglich C# bin ich praktisch gesehen noch absoluter Anfänger. Hab zwar ein paar Programmiererfahrungen mit C/C++, allerdings liegen diese schon Jahre zurück... zudem ist C# ja doch "irgendwie anders"... sehr viel cooler, wenn man so möchte ;)

Ich hab ein kleines Problem mit einer eigenen Klasse. Und zwar versuche ich dort ein Feldarray zu erstellen, dass aber noch nicht initialisiert ist da er dynamisch bleiben soll (okay... theoretisch könnte ich ja die Anzahl der Inhalte vorerst auf 0 setzen und dann anpassen... aber erst mal egal). Dieses Array versuche ich jetzt mit get/set (+ code zur Re-/ initialisierung) abzukapseln, merke aber, dass ich mit der urprünglichen Technik wie bei normalen Feldvariablen, nicht auf die einzelnen Elemente zugreife, sondern auf das gesamte Array... dass ist natürlich irgendwie blöd ;). Natürlich versuche ich mich grad an Ausweichmethoden wie "Add" oder dergleichen zu machen.... aber irgendwie hab ich das Gefühl, dass ich viel zu kompliziert überlege.... es muss doch einen einfachen weg geben. Außerdem ist auch der Aufruf des Inhaltens dann letztendlich merkwürdig.... Klasse.Methode(Array[index]).... gefällt mir ja gar nicht. Ich hab zwar jetzt etwas von ArrayList gelesen... doch andersrum betrachtet müsste sich ja der Code der Klasse "ArrayList" ja unteranderem mit dem Thema irgendwie beschäftigt haben.... sofern ich alles verstanden hab.

Für Hilfe oder Ideen wäre ich wirklich dankbar!

Mit freundlichen Grüßen
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 21.04.12 19:18 
Wenn du etwas dynamisches brauchst sind Arrays die falsche Wahl. Der erste übliche Verdächtige wäre dann eine generische Liste (List<T>). Und wenn diese Liste von einer Klasse veröffentlichen willst so das andere Elemente hinzufügen oder entfernen können aber die Listen Instanz selbst nicht ändern können dann verwendet mann üblicherweise eine reine getter Property.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public class MeineKlasse
{
    private List<MeineAndereKlasse> _meineListe = new List<MeineAndereKlasse>();

    public List<MeineAndereKlasse> MeineListe { get { return _meineListe; } }
}


ausblenden C#-Quelltext
1:
MeineKlasse.MeineListe.Add(new MeineAndereKlasse());					
Hurricane Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 21.04.12 20:57 
mmmhhh... okay... ich hab´s kapiert, dass es besser ist List oder ArrayList für dynamische Dinge zu verwenden. Allerdings versteh ich die Kapselung noch nicht wirklich. Ist es jetzt richtig, dass ich aus einer anderen Klasse, die Werte aus der gewünschten Klasse aufrufen muss??? Und im Programm muss ich zum erweitern meiner Liste, die Liste vom Typ meiner Klasse initialisieren.... das wird ja immer verwirrter ;)

Und vorallem.... kann ich jetzt auch die einzelnen Werte über den Index aufrufen, oder rufe ich durch get nicht die gesamte Liste auf?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 22.04.12 12:54 
Zitat:
Ist es jetzt richtig, dass ich aus einer anderen Klasse, die Werte aus der gewünschten Klasse aufrufen muss???


Häh?? Müssen nein können ja.

Zitat:
Und im Programm muss ich zum erweitern meiner Liste, die Liste vom Typ meiner Klasse initialisieren.... das wird ja immer verwirrter


Häh?? Du musst nix mehr initialisieren. In meinem Beispiel hat das die kapselnde Klasse schon erledigt.

Zitat:
Und vorallem.... kann ich jetzt auch die einzelnen Werte über den Index aufrufen, oder rufe ich durch get nicht die gesamte Liste auf?


Die Property ist eine Referenz auf ein Listenklasse die du nicht ändern kannst (die Referenz) also kein Problem oder wo siehst du ein Problem?

ausblenden C#-Quelltext
1:
MeineAndereKlasse instanz = MeineKlasse.MeineListe[MeinIndex];					
Hurricane Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 22.04.12 15:48 
Okay.... ich muss zugeben, dass ich noch nicht alles kapiert habe. Das zeigt mir ganz deutlich, dass ich noch sehr viel nachzuholen hab, was vorher eh klar war.
Allerdings hab ich das Ganze auf einem etwas anderem Weg doch lösen können. Dennoch bedanke ich mich für deine Hilfe!!! Zumindest weiß ich jetzt wo ich mich wenden kann, sofern ich nicht mehr weiterkommen.

Nochmals danke und schöne Grüße