c# kata kunci: mengoptimumkan pengulangan koleksi yield
, yang diperkenalkan dalam C# 2.0, menawarkan mekanisme yang kuat untuk mewujudkan pengatur yang cekap ke atas koleksi. Ini amat relevan apabila berurusan dengan dataset atau senario yang besar di mana hanya mendedahkan sebahagian daripada koleksi yang diperlukan. yield
Fungsi yield
. Antara muka ini mewakili urutan unsur -unsur yang boleh diulang dengan menggunakan gelung yield
. Secara kritis, IEnumerable
tidak memerlukan keseluruhan koleksi dimuatkan ke dalam memori sekaligus. foreach
yield
Sebaliknya, apabila gelung
, kaedah hanya dilaksanakan sehingga ia menemui pernyataan foreach
. Ia kemudian mengembalikan nilai yang dihasilkan dan menangguhkan pelaksanaannya. Kaedah ini meneruskan pelaksanaan hanya apabila elemen seterusnya diminta dalam lelaran. Ini pada dasarnya adalah mesin negeri yang menjana nilai atas permintaan. yield
yield return
Pertimbangkan elemen penapisan kaedah dari senarai yang lebih besar:
di sini,
<code class="language-csharp">IEnumerable<object> FilteredList(IList<object> fullList, IList<object> partialList) { foreach (object item in fullList) { if (partialList.Contains(item)) yield return item; } }</code>
dan FilteredList
. Ia memproses fullList
satu elemen pada satu masa, hanya menghasilkan mereka yang memenuhi syarat. Ini mengelakkan mencipta senarai baru, berpotensi besar, ditapis dalam ingatan. partialList
fullList
Kata kunci
mendapati penggunaan yang luas dalam:
yield
Membuat Iterator untuk struktur data tersuai atau algoritma tanpa overhead pra-populasi koleksi.
Mendapatkan data dari pangkalan data atau sumber luaran yang lain secara bertahap, mengurangkan penggunaan memori dan meningkatkan prestasi. Pertimbangkan contoh membaca ini dari pangkalan data:
<code class="language-csharp">public IEnumerable<T> ReadData<T>(string query, Func<IDataReader, T> mapper) { using (var reader = ExecuteQuery(query)) { while (reader.Read()) { yield return mapper(reader); } } }</code>
Dengan memanfaatkan kata kunci
, pemaju boleh membuat penyelesaian yang elegan dan cekap untuk melelehkan koleksi, terutamanya apabila berurusan dengan data yang besar atau dinamik.Atas ialah kandungan terperinci Bagaimanakah Kata Kunci C# `menghasilkan` Mendayakan Lelaran Cekap Terhadap Koleksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!