2009-11-13 5 views

Antwort

20

Die aktuelle Implementierung von List<T> verwendet Int32überall - seine Trägeranordnung zu konstruieren, die für ihre Count Eigenschaft, als Indexer und für alle seine internen Operationen - so gibt es einen aktuellen theoretischen maximal Int32.MaxValue Artikel (2^31-1 oder 2147483647).

Aber das .NET-Framework hat auch eine maximale Objektgröße von 2 GB, so dass Sie nur in der Nähe der Artikel Grenze mit Listen von Single-Byte-Elemente wie List<byte> oder List<bool> bekommen.

In der Praxis wird Ihnen wahrscheinlich kein zusammenhängender Speicher mehr zur Verfügung stehen, bevor Sie eines dieser Grenzwerte erreichen.

+2

* Theoretisch * bedeutet, dass Sie nur zufällig auf Elemente bis zu "Int32.MaxValue" zugreifen können, nicht wie viele Elemente es gibt, * theoretisch * natürlich. –

+1

@Martinho: Nun, die aktuelle Implementierung verwendet 'Int32' * überall *, also ist es nicht nur wahlfreier Zugriff, der auf 2^31 Elemente beschränkt ist. (Natürlich ist die Verwendung von 'Int32' intern nur ein Implementierungsdetail, aber Eigenschaften wie der Indexer und' Count' sind Teil des öffentlichen Auftrags.) – LukeH

Verwandte Themen