Autor Beitrag
bd.cole
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Mo 10.09.07 15:46 
Hallo ich habe mir eine Klasse erstellt:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
public class Unit
        {

            List<Element> element = new List<Element>();

            public List<Element> Elemente
            {
                get { return element; }
                set { element = value; }
            }

            public Unit() { }
        }

        public class Element
        {
            Adresse adresse = new Adresse();
            public Adresse Adressen
            {
                get { return adresse; }
                set { adresse = value; }
            }

            Kommunikationen kommunikationen = new Kommunikationen();
            public Kommunikationen Kommunikation
            {
                get { return kommunikationen; }
                set { kommunikationen = value; }
            }
            private string simulation = String.Empty;
            public string Simulation
            {
                get { return simulation; }
                set { simulation = value; }
            }

            public Element() { }
       }


        public class Adresse
        {
            private string strasse = String.Empty;
            private string hausnummer = String.Empty;
            
            public string Strasse
            {
                get { return strasse; }
                set { strasse= value; }
            }

            public string Hausnummer
            {
                get { return hausnummer; }
                set { hausnummer= value; }
            }

            public Adresse() { }


        }

        public class Kommunikationen
        {
            
            private string telefon = String.Empty;
            private string internet = String.Empty;

            public string Telefon
            {
                get { return telefon; }
                set { telefon= value; }
            }
            public string Internet
            {
                get { return internet; }
                set { internet= value; }
            }
            public Kommunikationen() { }
        }

Ich weiß nicht, wie ich jetzt in die Liste etwas speichern soll. Also normal mach ich ja jetzt in der class Element einen Konstruktor mit:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
 
public Element(string adr, string kom, string sim)
{ kommunikation = kom;
  adresse = adr;
  simulation = sim;
}

Und speicher es dann in dem ich ein Objekt erstelle, z.B. myObject und dann speicher mit:
ausblenden C#-Quelltext
1:
myObject.Element.Add(blubb, blabb, blibb);					

Aber das würde ja nur gehen wenn adresse und kommunikation strings wären. Wie geht das jetzt, wenn es eben weitere Klassen sind? Ich hoff ich habe mich verständlich ausgedrückt

Mfg Cole
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 10.09.07 15:56 
Vorweg etwas zu Deinen Klassen:

Du mischst bei den Begriffen immer Einzahl und Mehrzahl, das ist ein totales Durcheinander. Das solltest Du abändern.

Auch haben Properties für Listen normalerweise keinen Setter, weil man nur auf der bestehenden Instanz der Liste arbeiten soll. Generell solltest Du bei Properties, die keine Werttypen zurückliefern, überlegen, ob ein Setter sinnvoll ist oder ob nur Eigenschaften der vorhanden Instanz geändert werden sollen.

Zu Deinem Problem:

Einer Liste fügst Du vorher erstellte Instanzen hinzu:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
Unit u = new Unit();
Element element = new Element(); //oder einen anderen Konstruktor, falls vorhanden
element .Adresse.Strasse = "Lindenstraße";
/*... usw. ... */
u.Elemente.Add(new Element(element));

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
bd.cole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Di 11.09.07 10:24 
Hi danke erstmal, aber wenn ich das jetzt so mache, wie du beschrieben hast, dann ersetzt der immer alle straßen in der ganzen liste mit der zuletzt reingeschriebnenen. Also wenn wir von deinem Beispiel ausgehen, heißt jetzt jede straße in der Liste Lindenstraße, nciht nur die letzte
bd.cole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Di 11.09.07 10:34 
Ah hatte das new Element bei .Add(new Element(element)) übersehen. Aber wie muss ich nur bei der Klasse Element den Konstruktor schreiben, dass er mir das so schluckt. Bis jetzt hab ich nur einen Konstruktor public Element(){}
Habs schon versucht mit public Element(Element ele){}, da kommt zwar kein fehler, aber schreibt auch nix in die Liste
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 11.09.07 10:38 
Am Besten schaust Du Dir mal ein paar Grundlagen an: www.galileocomputing.de/openbook/csharp/ ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".