Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kata Kunci C# `menghasilkan` Mendayakan Lelaran Cekap Terhadap Koleksi?

Bagaimanakah Kata Kunci C# `menghasilkan` Mendayakan Lelaran Cekap Terhadap Koleksi?

Susan Sarandon
Lepaskan: 2025-01-27 17:46:13
asal
651 orang telah melayarinya

How Does the C# `yield` Keyword Enable Efficient Iteration Over Collections?

c# kata kunci: mengoptimumkan pengulangan koleksi yield

kata kunci C#

, 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

Membolehkan kaedah untuk mengembalikan objek

. 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

melelehkan kaedah berasaskan

, 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

Contoh ilustrasi

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>
Salin selepas log masuk
hanya mengembalikan unsur -unsur yang ada dalam kedua -dua

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

Aplikasi praktikal

Kata kunci

mendapati penggunaan yang luas dalam:

yield

  • iterators tersuai:

    Membuat Iterator untuk struktur data tersuai atau algoritma tanpa overhead pra-populasi koleksi.

  • Pengambilan data yang cekap:

    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:

Pendekatan ini mengambil dan memproses baris pangkalan data satu demi satu, jauh lebih efisien daripada memuatkan keseluruhan hasil yang ditetapkan ke dalam ingatan.
<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>
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan