Begrenzen Sie die Größe von List (Of T) - VB.NET

7

Ich versuche, die Größe meiner generischen Liste so zu begrenzen, dass sie nach Hinzufügen einer bestimmten Anzahl von Werten nicht mehr hinzufügt.

Ich versuche, dies mit der Capacity-Eigenschaft des List-Objekts zu tun, aber das scheint nicht zu funktionieren.

%Vor%

Wie würden die Leute empfehlen, die Größe einer Liste zu begrenzen?

Ich versuche zu vermeiden, die Größe der Liste zu überprüfen, nachdem jedes Objekt hinzugefügt wurde.

    
w4ymo 24.03.2009, 13:02
quelle

5 Antworten

9

Es gibt verschiedene Möglichkeiten, Dinge zu einem List<T> hinzuzufügen: Add, AddRange, Insert, etc.

Betrachten Sie eine Lösung, die von Collection<T> :

erbt %Vor%

Auf diese Weise wird die Kapazität respektiert, egal ob Sie Add oder Insert .

    
Ryan Lundy 24.03.2009, 13:29
quelle
14

Es gibt keine eingebaute Möglichkeit, die Größe einer Liste (Of T) zu begrenzen. Die Capacity-Eigenschaft ändert lediglich die Größe des Undering-Puffers und beschränkt sie nicht.

Wenn Sie die Größe der Liste begrenzen möchten, müssen Sie einen Wrapper erstellen, der nach ungültigen Größen sucht. Zum Beispiel

%Vor%     
JaredPar 24.03.2009 13:05
quelle
5

Sie möchten ein neues LimitedList ableiten und die hinzugefügten Methoden überschreiben. So etwas wird dir den Anfang machen.

%Vor%

Habe gerade gemerkt, dass du in VB bist, ich werde bald übersetzen

Bearbeiten Siehe Jareds für eine VB-Version. Ich lasse das hier für den Fall, dass jemand eine C # Version haben möchte.

Für das, was es wert ist, nimmt meins einen etwas anderen Ansatz, da es die List-Klasse erweitert, anstatt sie einzukapseln. Welchen Ansatz Sie verwenden möchten, hängt von Ihrer Situation ab.

    
Garry Shutler 24.03.2009 13:08
quelle
0

Sie sollten Ihre eigene Liste / Sammlung implementieren, wenn Sie die maximale Anzahl von Elementen darin einschränken möchten.

    
Fabian Vilers 24.03.2009 13:06
quelle
0

Liste hat keine solche Einrichtung.

Das Kapazitätsmaterial ist nur eine Leistungsoptimierung.

Sie müssen Ihre eigene Klasse rollen, von der Liste ableiten und die Implementierung hinzufügen überschreiben.

    
Sam Saffron 24.03.2009 13:07
quelle

Tags und Links