C#でリストを空にする方法は?


109

リストを空にしたい。どうやってするか?


34
ここでの応答時間は、MSDNの読み取り/検索よりも高速です
V4Vendetta '15

27
さらに、MSDNよりも簡単に答えを見つけることができます。
Matt Connolly、

14
グーグルなら.net empty listこのページがMSDNの前に表示されるということは言うまでもありません!
ビビアンリバー

2
@ V4Vendetta 2018年に、StackOverflowは、コメントにMSDNドキュメントへのリンクがあるスレッドにコメントを付けるボットを作成することをお勧めします...
scharette

回答:


234

とても簡単です:

myList.Clear();

3
...リストが実際にある場合List<>ArrayListまたは実装IList。;)
Lucero

3
@Luceroどちらでもない場合、リストとして呼び出されますか?
Srinivas Reddy Thatiparthy 2011年

16
これはグーグルのトップヒットであり、私はこの問題に出くわすので、私はこれをネクロコメントしています。ループで同じリストを使用し、clearを使用すると、リストは古いオブジェクトへの参照を維持することがよくあります-私はしばしば= new LisT <T>();を使用することになります。それはすべての古い割り当てを即座にクリアするためです。しかし、ほとんどの人にとって、.Clear(); でも十分ですが、リストが奇妙に動作する場合は、= new List <T>();を使用してみてください。
Charles

1
2020年の時点でいくつかの誤った情報がここに提供されているため、これを二重にネクロコメントしList<T>.Clearます。必要に応じてGCが割り当てをクリアできるように、すべての参照を適切にクリアします。new List<T>これを実行せず、事実上すべてのシナリオに適さない
John

28

「リスト」がを意味するList<T>場合、Clearメソッドが必要です。

List<string> list = ...;
...
list.Clear();

これらについてMSDNドキュメントを検索する習慣を身に付けてください。

そのタイプのさまざまなビットに関するドキュメントをすばやく検索する方法は次のとおりです。

これらすべてのGoogleクエリはリンクのバンドルをリストしますが、通常はそれぞれの場合にGoogleが最初に提供するリンクが必要です。


「これらすべてにリンクのバンドルがリストされていますが、通常は最初のリンクが必要です。」リストを空にしたくないのですか?
CVn 2011年

すみません、もっとはっきりしているはずです。通常、「リストクラス」ではなく、Googleから提供される最初のリンクが必要です。
Lasse V. Karlsen、2011年

9

別の答えを出すには(5つの等しい答えが必要なのは誰ですか?):

list.Add(5); 
// list contains at least one element now
list = new List<int>();
// list in "list" is empty now

古いリストへの他のすべての参照はクリアされていないことに注意してください(状況によっては、これが必要な場合があります)。また、パフォーマンスに関しては、通常は少し遅くなります。


list = new List <>()の設定が実際にlist.Clear();より遅いことを確認できますか?MSDN(以下のリンク)によるとlist.Clear(); O(N)操作であり、新しいリストのインスタンス化にそれ以上時間がかかるとは思えません。 msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx
Chris Tramel

5
DotNetPerlsはベンチマークを行い、新しいList <>の方が速いことを発見しました。dotnetperls.com/list-clear
ゲルハルトパウエル

さらにlist、新しい参照があることに注意してください。したがって、そのリストのロックを使用している場合は使用しないでください。
jeromej

9

オプション#1:Clear()関数を使用してを空にし、そのList<T>容量を保持します。

  • カウントは0に設定され、コレクションの要素からの他のオブジェクトへの参照も解放されます。

  • 容量は変わりません。

オプション#2- Clear()およびTrimExcess()関数を使用List<T>して初期状態に設定します。

  • カウントは0に設定され、コレクションの要素からの他のオブジェクトへの参照も解放されます。

  • 空をトリミングするList<T>と、リストの容量がデフォルトの容量に設定されます。

定義

カウント =実際にある要素の数List<T>

容量 =内部データ構造がサイズ変更せずに保持できる要素の総数。

Clear()のみ

List<string> dinosaurs = new List<string>();    
dinosaurs.Add("Compsognathus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Deinonychus");
Console.WriteLine("Count: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
dinosaurs.Clear();
Console.WriteLine("\nClear()");
Console.WriteLine("\nCount: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);

Clear()およびTrimExcess()

List<string> dinosaurs = new List<string>();
dinosaurs.Add("Triceratops");
dinosaurs.Add("Stegosaurus");
Console.WriteLine("Count: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
dinosaurs.Clear();
dinosaurs.TrimExcess();
Console.WriteLine("\nClear() and TrimExcess()");
Console.WriteLine("\nCount: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);


5

clearメソッドを使用できます

List<string> test = new List<string>();
test.Clear();

4

リストにはClear()関数が必要です。

List<object> myList = new List<object>();

myList.Add(new object()); // Add something to the list

myList.Clear() // Our list is now empty
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.