tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
692
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von colblake
    colblake colblake ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    dresden
    Beiträge
    214
    Hallo,

    ich schau mir gerade mit ILSpy die Implementation der Generischen Liste (List<T>) an und wundere mich. Hinter der Liste steckt doch wieder ein einfaches Array:

    Code csharp:
    1
    
    private T[] _items;


    welches bei Überlauf komplett in ein neues, größeres Array kopiert wird. Bislang dachte ich, dass es besser wäre eine verkettete Liste statt ein Array für Verkettungen undefinierter Länge zu benutzen.

    Nun zur Frage:
    Warum steckt dahinter ein Array? Performance? Einfacher?


    Zusatzfrage:
    Ist T[] _items ein Array mit den Objekten T oder ein Array von Referenzen auf diese Objekte?
    Tschuldigung für die Anfängerfrage.


    Gruß.
    *fall so'n bischen vom Glauben ab.*
    Geändert von colblake (16.01.12 um 12:18 Uhr)
     
    Über so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Eine List<T> ist zu allererst mal eine Datenstruktur die wahlfreien Zugriff per Index bietet. Dafür wäre eine verkettete Liste denkbar schlecht geeignet.

    Eine LinkedList<T> dagegen ist auch wirklich als verkettete Liste implementiert.

    Man sollte einfach die Datenstruktur wählen die am besten zur Problemstellung passt.

    Zusatzfrage:
    Ist T[] _items ein Array mit den Objekten T oder ein Array von Referenzen auf diese Objekte?
    Tschuldigung für die Anfängerfrage.
    Gegenfrage: Handelt es sich bei T um einen Werttyp oder Referenztyp?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von colblake
    colblake colblake ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    dresden
    Beiträge
    214
    Hi deepthroat,

    danke für die Antwort.
    D.h. man nimmt die evtl. längere Zeit beim hinzufügen von Elementen in kauf um einen performanten Indexer zu haben. Hm, wäre eine Erklärung.

    Zitat Zitat von deepthroat Beitrag anzeigen
    ...
    Gegenfrage: Handelt es sich bei T um einen Werttyp oder Referenztyp?

    Gruß
    ich meinte allgemein. Also beide.
    Aus deiner Gegenfrage entnehme ich aber schon, dass es wohl bei Referenztypen die Referenz ist und bei Werttypen der Wert, Oder?
    Geändert von colblake (16.01.12 um 13:57 Uhr)
     
    Über so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von colblake Beitrag anzeigen
    ich meinte allgemein. Also beide.
    Aus deiner Gegenfrage entnehme ich aber schon, dass es wohl bei Referenztypen die Referenz ist und bei Werttypen der Wert, Oder?
    Ja, genau.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. [VC++.NET] Arbeiten mit Generic::List / Array
    Von the incredible Leitman im Forum .NET Datenverwaltung
    Antworten: 19
    Letzter Beitrag: 27.12.06, 10:13
  2. List+Array Sortieren
    Von Bicko im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.10.06, 17:33
  3. Array und List
    Von manja im Forum Java
    Antworten: 6
    Letzter Beitrag: 06.05.04, 01:05
  4. list (Array); Problem
    Von EM-Autotechnik im Forum PHP
    Antworten: 0
    Letzter Beitrag: 31.10.03, 15:18
  5. Array+Implode und BB-Code:[List]
    Von CrazyHornet im Forum PHP
    Antworten: 7
    Letzter Beitrag: 03.09.03, 09:38