Entwickler-Ecke
C# - Die Sprache - Generische ArrayList auf einzelnes Item zugreifen?
Master_BB - Do 18.05.06 23:51
Titel: Generische ArrayList auf einzelnes Item zugreifen?
Hallo,
wenn ich eine Klasse habe die ich von arraylist
abgeleitet habe und generisch ist, wie greife ich auf ein
einzelnes element zu?
sieht roh so aus
C#-Quelltext
1: 2: 3: 4:
| pulic class EventList<T> : Arraylist { public EventList(){} } |
nun sollen da EventItems per Add hinzugefügt werden
und ich möchte irgentwie über
EventList myEL = new EventList<EventItem>();
myEL[2]
darauf zugreifen udn halt ein EventItem rauskriegen
wenn mir da mal jemand das kurz verraten kann
ich finds irgentwie so expliziet nicht so schnell
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt
Christian S. - Fr 19.05.06 00:05
ArrayList ist doch gar nicht generisch? :gruebel: Willst Du nicht lieber von List<T> ableiten?
Master_BB - Fr 19.05.06 01:00
hm compiler meckert so aber nicht.
ok wenn ich also von der list ableite
hab ich da dann wenigstens gleich item als member zur verfügung?
ich hab mich nämlich gewundert warum ich auf
item von arraylist nicht zugreifen konnte durch das generische
Kha - Fr 19.05.06 12:38
Die indexed Property verschwindet doch nicht beim Ableiten, du kannst weiterhin wie bei einer List/ArrayList darauf zugreifen :gruebel: .
Btw: Meist macht ein Wrapper um List<> mehr Sinn als eine Ableitung.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| class FooList<T> : IList<T> { List<T> innerList;
T this[int index] { get { return innerList[index]; } set { if (bar) DoSomethingSpecial(value); innerList[index] = value; } }
} |
Master_BB - Sa 20.05.06 10:50
hm also ein interface zu implementieren ist mir zuviel aufwand,
da ich auch nur die List<T> mit ein paar erweiterten Funktionen benötige.
Mein konzept sieht also so aus
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| public class EventList<T> : List<T> { public void AddNewEvent(......) { EventItem ANew = new EventItem(); Add(ANew); } } |
bei der Add stelle meint er doch tatsächlich
"Die beste Übereinstimmung für die überladene System.Collections.Genereic.List<T>.Add(T)-Methode hat einige ungültige Argumente".
Eigentlich müßte die Liste doch jetzt schucken was ich will.
Wenn ihr mir dabei nocheinmal helfen könntet.
Gruß
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt
Kha - Sa 20.05.06 15:20
Du musst dich schon entscheiden, ob du nun eine generische Liste oder eine für EventItems haben willst. Beides zusammen macht keinen Sinn ;) .
Master_BB - So 21.05.06 19:28
ich will eine generische für eventitems
aus einem grund, wenn ich mir eine eventlist von arraylist
ableite und dann all meine schönen sachen mache die für eventitems in der
liste sind, hab ihc immernoch das "problem" das ich wenn ich auf
ein bestimmtes item zugreife typecasten muss.
und ich will die generische dazu verwenden das wenn ich die
property Items von der liste benutze ich gleich mein eventitem bekomme
und nicht typecasten muss.
das ist an sich der einzigste punkt warum ich hier eine
generische liste möchte, ich will nicht typecasten,
und warum sollte ich das auch nicht tun?
Kha - Mo 22.05.06 18:12
Master_BB hat folgendes geschrieben: |
ich will eine generische für eventitems |
Das willst du nicht.
;)
Was du willst, ist das:
C#-Quelltext
1: 2: 3: 4:
| public class EventList : List<EventItem> { ... } |
Was du
meinst, wäre das:
C#-Quelltext
1: 2: 3:
| public class EventList<T> : List<T> where T : EventItem; ... |
Diesen Klassentyp könntest du dann auf jeden Nachfahren von EventItem spezialisieren, aber so wie ich das sehe, hast du gar keine solchen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!