Memahami yield
Kata Kunci C# untuk Lelaran Cekap
Diperkenalkan dalam C# 2.0, kata kunci yield
menyelaraskan lelaran penting dengan ketara. Pertimbangkan contoh ini, menggambarkan penggunaannya dalam mencipta IEnumerable<T>
:
<code class="language-csharp">IEnumerable<object> FilteredList() { foreach(object item in FullList) { if(IsItemInPartialList(item)) yield return item; } }</code>
Fungsi ini tidak membina senarai lengkap dalam ingatan. Sebaliknya, ia mengembalikan iterator. Setiap kali gelung foreach
dalam kod panggilan meminta item seterusnya, fungsi FilteredList()
menyambung semula pelaksanaan dari tempat ia berhenti, menilai item
seterusnya dan mengembalikannya hanya jika syarat dipenuhi.
Mari kita periksa contoh yang lebih mudah:
<code class="language-csharp">public void Consumer() { foreach(int i in Integers()) { Console.WriteLine(i); } } public IEnumerable<int> Integers() { yield return 1; yield return 2; yield return 4; yield return 8; yield return 16; yield return 16777216; }</code>
Menyahpepijat kod ini mendedahkan bahawa Integers()
tidak dilaksanakan sepenuhnya sekaligus. Ia dilaksanakan hanya sehingga ia mencapai yield return
, mengembalikan satu nilai. Lelaran seterusnya bagi gelung foreach
dalam Consumer()
menyebabkan Integers()
disambung semula, meneruskan dari yield return
seterusnya.
Faedah utama menggunakan yield
:
IEnumerable
dan IEnumerator
, menghasilkan kod yang lebih bersih dan ringkas.Atas ialah kandungan terperinci Bagaimanakah kata kunci C# `Hasil` memudahkan lelaran penting?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!