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.
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>
:
Auf diese Weise wird die Kapazität respektiert, egal ob Sie Add
oder Insert
.
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% Sie möchten ein neues LimitedList
ableiten und die hinzugefügten Methoden überschreiben. So etwas wird dir den Anfang machen.
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.
Sie sollten Ihre eigene Liste / Sammlung implementieren, wenn Sie die maximale Anzahl von Elementen darin einschränken möchten.
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.