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 ...
... 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:
Kelas Daftar - menyediakan List<T>kelas itu sendiri (di sinilah Anda harus mulai )
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 nowlist=newList<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.
.net empty list
, halaman ini muncul sebelum MSDN!Jawaban:
Sangat mudah:
sumber
List<>
,ArrayList
atau alatIList
. ;)List<T>.Clear
menghapus 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 skenarioJika yang Anda maksud dengan "daftar" adalah a
List<T>
, maka metode Hapus adalah yang Anda inginkan:Anda harus membiasakan diri mencari dokumentasi MSDN tentang hal-hal ini.
Berikut ini cara mencari dokumentasi dengan cepat pada berbagai bit jenis itu:
List<T>
kelas itu sendiri (di sinilah Anda harus mulai )Semua kueri Google ini mencantumkan bundel tautan, tetapi biasanya Anda menginginkan yang pertama yang diberikan Google kepada Anda dalam setiap kasus.
sumber
Untuk memberikan jawaban alternatif (Siapa yang butuh 5 jawaban yang sama?):
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.
sumber
list
memiliki referensi baru. Jadi jangan gunakan itu jika Anda menggunakan kunci di daftar itu.Opsi # 1: Gunakan fungsi Clear () untuk mengosongkan
List<T>
dan mempertahankan kapasitasnya.Opsi # 2 - Gunakan fungsi Clear () dan TrimExcess () untuk mengatur
List<T>
ke status awal.Definisi
Hitung = jumlah elemen yang sebenarnya ada di
List<T>
Kapasitas = jumlah total elemen yang dapat disimpan struktur data internal tanpa mengubah ukurannya.
Hapus () Saja
Clear () dan TrimExcess ()
sumber
kamu bisa melakukannya
sumber
Anda dapat menggunakan metode yang jelas
sumber
Anda memerlukan fungsi Clear () pada daftar, seperti itu.
sumber