Bagaimana cara mengosongkan daftar di C #?


109

Saya ingin mengosongkan daftar. Bagaimana cara melakukannya?


34
Waktu respons di sini lebih cepat daripada saat membaca / menelusuri MSDN
V4Vendetta

27
Ditambah jawabannya sekarang lebih mudah ditemukan di sini daripada MSDN.
Matt Connolly

14
Belum lagi fakta bahwa jika Anda Google .net empty list, halaman ini muncul sebelum MSDN!
Sungai Vivian

2
@ V4Vendetta Pada tahun 2018, saya menyarankan agar StackOverflow mungkin membuat Bot yang meletakkan komentar Anda di utas mana pun yang memiliki tautan ke dokumen MSDN di komentar ...
scharette

Jawaban:


234

Sangat mudah:

myList.Clear();

3
... jika daftar sebenarnya List<>, ArrayListatau alat IList. ;)
Lucero

3
@ Lucero apakah itu disebut sebagai daftar jika bukan keduanya?
Srinivas Reddy Thatiparthy

16
Karena ini adalah hit teratas di google dan saya mengalami masalah ini, saya necro mengomentari ini. Jika Anda menggunakan daftar yang sama dalam satu lingkaran dan menggunakan clear, daftar akan sering menyimpan referensi ke objek lama - saya sering berakhir menggunakan = new LisT <T> (); karena fakta bahwa itu menghapus semua alokasi lama secara instan. Bagi kebanyakan orang, .Clear (); sudah cukup, tetapi jika Anda menemukan daftar yang bertingkah aneh - coba gunakan = new List <T> () ;.
Charles

1
Saya akan menggandakan permintaan ini karena beberapa informasi yang salah telah diberikan di sini mulai tahun 2020. List<T>.Clearmenghapus semua referensi dengan benar yang memungkinkan GC untuk menghapus allocs bila diperlukan. new List<T>TIDAK melakukan ini dan tidak cocok secara efektif dalam semua skenario
Yohanes

28

Jika yang Anda maksud dengan "daftar" adalah a List<T>, maka metode Hapus adalah yang Anda inginkan:

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

Anda harus membiasakan diri mencari dokumentasi MSDN tentang hal-hal ini.

Berikut ini cara mencari dokumentasi dengan cepat pada berbagai bit jenis itu:

Semua kueri Google ini mencantumkan bundel tautan, tetapi biasanya Anda menginginkan yang pertama yang diberikan Google kepada Anda dalam setiap kasus.


"Semua ini mencantumkan sekumpulan tautan, tetapi biasanya Anda menginginkan yang pertama." Kecuali Anda ingin mengosongkan daftar?
CVn

Maaf, saya seharusnya lebih jelas. Anda biasanya menginginkan tautan pertama yang diberikan Google kepada Anda, bukan "Kelas Daftar".
Lasse V. Karlsen

9

Untuk memberikan jawaban alternatif (Siapa yang butuh 5 jawaban yang sama?):

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

Ingatlah bahwa semua referensi lain ke daftar lama belum dihapus (tergantung situasinya, ini mungkin yang Anda inginkan). Selain itu, dalam hal performa, biasanya sedikit lebih lambat.


Dapatkah Anda memverifikasi bahwa daftar pengaturan = Daftar baru <> () sebenarnya lebih lambat daripada daftar.Clear () ;? Menurut MSDN (tautan dibawah) list.Clear (); adalah operasi O (N), dan saya tidak bisa membayangkan membuat contoh daftar baru akan memakan waktu lebih lama dari itu. msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx
Chris Tramel

5
DotNetPerls melakukan benchmark dan menemukan bahwa List <> baru lebih cepat. dotnetperls.com/list-clear
Gerhard Powell

Selain itu, perhatikan juga bahwa listmemiliki referensi baru. Jadi jangan gunakan itu jika Anda menggunakan kunci di daftar itu.
jeromej

9

Opsi # 1: Gunakan fungsi Clear () untuk mengosongkan List<T>dan mempertahankan kapasitasnya.

  • Hitungan disetel ke 0, dan referensi ke objek lain dari elemen koleksi juga dirilis.

  • Kapasitas tetap tidak berubah.

Opsi # 2 - Gunakan fungsi Clear () dan TrimExcess () untuk mengatur List<T>ke status awal.

  • Hitungan disetel ke 0, dan referensi ke objek lain dari elemen koleksi juga dirilis.

  • Memangkas yang kosong akan List<T>menyetel kapasitas List ke kapasitas default.

Definisi

Hitung = jumlah elemen yang sebenarnya ada diList<T>

Kapasitas = jumlah total elemen yang dapat disimpan struktur data internal tanpa mengubah ukurannya.

Hapus () Saja

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 () dan 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

Anda dapat menggunakan metode yang jelas

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

4

Anda memerlukan fungsi Clear () pada daftar, seperti itu.

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

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

myList.Clear() // Our list is now empty
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.