Die Antwortzeit hier ist schneller als es gewesen wäre, MSDN
V4Vendetta
27
Außerdem ist die Antwort hier jetzt leichter zu finden als bei MSDN.
Matt Connolly
14
Ganz zu schweigen von der Tatsache, dass .net empty listdiese Seite bei Google vor MSDN angezeigt wird!
Vivian River
2
@ V4Vendetta Im Jahr 2018 würde ich vorschlagen, dass StackOverflow wahrscheinlich einen Bot erstellen sollte, der Ihren Kommentar zu jedem Thread, der einen Link zu MSDN doc in den Kommentaren hat ...
... wenn die Liste ist eigentlich ein List<>, ArrayListoder Geräte IList. ;)
Lucero
3
@Lucero wird es als Liste aufgerufen, wenn es keine davon ist?
Srinivas Reddy Thatiparthy
16
Da dies ein Top-Hit in Google ist und ich auf dieses Problem stoße, kommentiere ich dies nekrotisch. Wenn Sie dieselbe Liste in einer Schleife verwenden und clear verwenden, wird in der Liste häufig auf alte Objekte verwiesen. Am Ende verwende ich häufig = new LisT <T> (); aufgrund der Tatsache, dass alle alten Zuordnungen sofort gelöscht werden. Für die meisten Leute jedoch .Clear (); wird ausreichen, aber wenn Sie eine Liste finden, die seltsam wirkt - versuchen Sie es mit = new List <T> ();.
Charles
1
Ich werde dies verdoppeln, da hier ab 2020 einige Fehlinformationen bereitgestellt wurden. List<T>.ClearAlle Referenzen werden ordnungsgemäß gelöscht, sodass der GC die Zuweisungen bei Bedarf löschen kann. new List<T>tut dies NICHT und ist in
John
28
Wenn Sie mit "Liste" a meinen List<T>, dann ist die Clear- Methode genau das , was Sie wollen:
List<string>list=...;...list.Clear();
Sie sollten es sich zur Gewohnheit machen, die MSDN-Dokumentation zu diesen Dingen zu durchsuchen.
So suchen Sie schnell nach Dokumentation zu verschiedenen Bits dieses Typs:
List Class - stellt die List<T>Klasse selbst bereit ( hier hätten Sie beginnen sollen )
Alle diese Google-Abfragen enthalten ein Bündel von Links. In der Regel möchten Sie jedoch jeweils den ersten Link, den Google Ihnen zur Verfügung stellt.
"Alle diese Listen enthalten ein Bündel von Links, aber normalerweise möchten Sie den ersten." Es sei denn, Sie möchten die Liste leeren?
Ein CVn
Entschuldigung, ich hätte klarer sein sollen. Normalerweise möchten Sie den ersten Link, den Google Ihnen gibt, nicht die "Listenklasse".
Lasse V. Karlsen
9
Um eine alternative Antwort zu geben (Wer braucht 5 gleiche Antworten?):
list.Add(5);// list contains at least one element nowlist=newList<int>();// list in "list" is empty now
Beachten Sie, dass alle anderen Verweise auf die alte Liste nicht gelöscht wurden (je nach Situation ist dies möglicherweise das, was Sie möchten). Auch in Bezug auf die Leistung ist es normalerweise etwas langsamer.
Können Sie überprüfen, ob die Einstellung list = new List <> () tatsächlich langsamer ist als list.Clear ();? Laut MSDN (Link unten) list.Clear (); ist eine O (N) -Operation, und ich kann mir nicht vorstellen, dass das Instanziieren einer neuen Liste länger dauern würde. msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx
Chris Tramel
5
DotNetPerls hat einen Benchmark durchgeführt und festgestellt, dass die neue Liste <> schneller ist. dotnetperls.com/list-clear
Gerhard Powell
Denken Sie auch daran, dass listes eine neue Referenz gibt. Verwenden Sie das also nicht, wenn Sie eine Sperre für diese Liste verwenden.
Jeromej
9
Option 1: Verwenden Sie die Funktion Clear () , List<T>um die Kapazität zu leeren und beizubehalten.
Count wird auf 0 gesetzt, und Verweise auf andere Objekte aus Elementen der Sammlung werden ebenfalls freigegeben.
.net empty list
diese Seite bei Google vor MSDN angezeigt wird!Antworten:
Es ist wirklich einfach:
quelle
List<>
,ArrayList
oder GeräteIList
. ;)List<T>.Clear
Alle Referenzen werden ordnungsgemäß gelöscht, sodass der GC die Zuweisungen bei Bedarf löschen kann.new List<T>
tut dies NICHT und ist inWenn Sie mit "Liste" a meinen
List<T>
, dann ist die Clear- Methode genau das , was Sie wollen:Sie sollten es sich zur Gewohnheit machen, die MSDN-Dokumentation zu diesen Dingen zu durchsuchen.
So suchen Sie schnell nach Dokumentation zu verschiedenen Bits dieses Typs:
List<T>
Klasse selbst bereit ( hier hätten Sie beginnen sollen )Alle diese Google-Abfragen enthalten ein Bündel von Links. In der Regel möchten Sie jedoch jeweils den ersten Link, den Google Ihnen zur Verfügung stellt.
quelle
Um eine alternative Antwort zu geben (Wer braucht 5 gleiche Antworten?):
Beachten Sie, dass alle anderen Verweise auf die alte Liste nicht gelöscht wurden (je nach Situation ist dies möglicherweise das, was Sie möchten). Auch in Bezug auf die Leistung ist es normalerweise etwas langsamer.
quelle
list
es eine neue Referenz gibt. Verwenden Sie das also nicht, wenn Sie eine Sperre für diese Liste verwenden.Option 1: Verwenden Sie die Funktion Clear () ,
List<T>
um die Kapazität zu leeren und beizubehalten.Option 2 - Verwenden Sie die Funktionen Clear () und TrimExcess () , um
List<T>
den Ausgangszustand festzulegen .Definitionen
Count = Anzahl der Elemente, die sich tatsächlich in der befinden
List<T>
Kapazität = Gesamtzahl der Elemente, die die interne Datenstruktur ohne Größenänderung enthalten kann.
Nur Clear ()
Clear () und TrimExcess ()
quelle
du kannst das tun
quelle
Sie können die Methode clear verwenden
quelle
Sie benötigen die Clear () - Funktion in der Liste.
quelle