Apa perbedaan antara fungsi AddRange dan Concat pada Daftar generik? Apakah yang satu lebih direkomendasikan?
Jawaban:
Mereka memiliki semantik yang sangat berbeda.
AddRange mengubah daftar dengan menambahkan item lain ke dalamnya.
Concat mengembalikan urutan baru yang berisi daftar dan item lainnya, tanpa mengubah daftar.
Pilih mana yang memiliki semantik yang Anda inginkan.
Perbedaan besar adalah bahwa AddRange mengubah daftar yang disebutnya sedangkan Concat membuat Daftar baru. Karenanya mereka memiliki kegunaan yang berbeda.
Juga Concat adalah metode ekstensi yang berlaku untuk IEnumerable dan mengembalikan IEnumerable, Anda memerlukan .ToList () untuk menghasilkan List baru.
Jika Anda ingin memperluas konten dari daftar yang sudah ada, gunakan AddRange.
Jika Anda membuat daftar baru dari dua sumber IEnumerable, gunakan Concat dengan .ToList. Ini memiliki kualitas yang tidak bermutasi pada salah satu sumber.
Jika Anda hanya perlu menghitung isi dari dua Daftar (atau IEnumerable lainnya) maka cukup gunakan Concat setiap kali, ini memiliki keuntungan karena tidak benar-benar mengalokasikan memori baru untuk menyimpan daftar terpadu.
Saya menemukan artikel menarik ini berbicara tentang perbedaan antara 2 struktur ini dan membandingkan kinerjanya ...
Ide utamanya adalah bahwa AddRange jauh lebih cepat jika tentang koleksi ukuran besar.
Ini Tautannya
Semoga ini membantu,
Concat
dan AddRange
dengan List<KeyValuePair<string, string>>
1000 elemen, digabungkan / ditambahkan 100 kali, dan AddRange
sangat cepat. Hasilnya adalah ini: AddRange
13 ms, Concat().ToList()
16.000 ms, dan Concat
pada saat IEnumerable
melakukan hanya ToList
pada akhirnya: 2.700 ms.