Iterators ialah kaedah yang digunakan untuk mendapatkan semula elemen dan melakukan lelaran satu demi satu dalam tatasusunan, senarai, dll. Pernyataan pulangan hasil digunakan dengan kaedah iterator untuk mengembalikan elemen koleksi dan pemisah hasil digunakan untuk hentikan lelaran. Ia sentiasa menyimpan lokasi semasa dan mengembalikan elemen seterusnya apabila lelaran seterusnya berlaku. Nilai objek IEnumerable dan IEnumerator ialah jenis hasil pulangan. Dalam topik ini, kita akan belajar tentang Iterators dalam C#.
Di bawah ialah contoh untuk menunjukkan lelaran dengan pelbagai kaedah seperti gelung, gelung foreach dan pembanci.
Contoh:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Iterators { class Iterator { static void Main(string[] args) { for (int i = 1; i <= 7; i++) { Console.WriteLine( i); } Console.WriteLine("Press Enter Key to Exit.."); Console.ReadLine(); } } }
Gelung A untuk terdiri daripada tiga pernyataan. Pada mulanya, pemulaan dilaksanakan dan kemudian syarat yang merupakan ungkapan Boolean. Selepas iterator itu dilaksanakan untuk menukar nilai pembolehubah yang dimulakan. Proses gelung for ini berterusan sehingga keadaan palsu dan apabila palsu, gelung for ditamatkan.
Output:
Contoh:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Iterators { class Iterator { static void Main(string[]args) { string[] values = new string[3] { "John", "Bob", "Eva" }; foreach (string name in values) { Console.WriteLine(name); } Console.WriteLine("Press Enter Key to Exit.."); Console.ReadLine(); } } }
Gelung foreach bersama dalam kata kunci digunakan untuk mengulang item. Kata kunci digunakan untuk memilih item pada setiap lelaran. Item pertama diulang dan disimpan dalam elemen selepas item kedua itu dan seterusnya. Bilangan lelaran foreach bergantung pada bilangan elemen dalam koleksi. Dalam contoh ini, koleksi terdiri daripada tiga nilai jadi bilangan foreach akan berlaku tiga kali dan memaparkan nilai.
Output:
Contoh #1
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Iterators { class Iterator { public static IEnumerable<string> GetArray() { int[] array = new int[] { 12, 45, 56, 21, 4 }; // initializing array elements foreach (var element in array) // iterating array element { yield return element.ToString(); // returning elements } } public static void Main(string[]args) // main method { IEnumerable<string> elements = GetArray(); // storing array element foreach(var element in elements) { Console.WriteLine(element); Console.ReadKey(); } } } }
Dalam contoh ini, terdapat tatasusunan elemen yang mengandungi lima elemen dan foreach digunakan untuk lelaran setiap elemen. Pernyataan hasil digunakan untuk mengembalikan elemen selepas setiap lelaran. Antara muka IEnumerable menyimpan setiap elemen manakala foreach digunakan untuk memaparkan elemen pulangan daripada lelaran. Iterator ini digunakan dalam kaedah.
Output:
Contoh #2
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Iterators { class Iterator { public static IEnumerable<string> GetList() { List<string> list = new List<string>(); list.Add("Sunday"); // adding elements to list list.Add("Monday"); list.Add("Tuesday"); list.Add("Wednesday"); list.Add("Thursday"); list.Add("Friday"); list.Add("Saturday"); foreach(var element in list) //iteration of list elements { yield return element; //returning elements after iteration } } public static void Main(string[]args) // main method { IEnumerable<string> elements = GetList(); // storing elements foreach(var element in elements) { Console.WriteLine(element); Console.ReadKey(); } } } }
Dalam contoh ini, koleksi senarai digunakan dan kaedah senarai.tambah digunakan untuk menambah elemen dalam senarai. Di sini senarai itu terdiri daripada tujuh elemen. Foreach digunakan untuk lelaran setiap elemen. Pernyataan hasil digunakan untuk mengembalikan elemen selepas setiap lelaran. Antara muka IEnumerable menyimpan setiap elemen manakala foreach digunakan untuk memaparkan elemen pulangan daripada lelaran.
Output:
Contoh #3
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Iterators { class Iterator { public static void Main(string[] args) { foreach(var item in fib(6)) // iteration of elements { Console.WriteLine(item); } } public static IEnumerable<int> fib(int number) { int x = 0, y = 1; // yield return x; //yield return y; for (int i=0; i<=number; i++) { int temp = x; x = y; y = temp + y; yield return y; // returning the element Console.ReadKey(); } } } }
Dalam contoh ini, siri Fibonacci dijana dan lelaran digunakan dalam pengendali. Pelaksanaan ini sama seperti kami menggunakan iterator dalam kaedah kecuali dalam operator ini digunakan untuk mengembalikan sesuatu.
Output:
Contoh #4
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Iterators { class Iterator { static void Main() { List<int> list = new List<int>(); list.Add(10); // adding elements to list list.Add(20); list.Add(30); list.Add(40); list.Add(50); list.Add(60); list.Add(70); List<int>.Enumerator a = list.GetEnumerator(); Write(a); } static void Write(IEnumerator<int> a) { while (a.MoveNext()) { int value = a.Current; Console.WriteLine(value); Console.ReadKey(); } } } }
Dalam contoh di atas, koleksi senarai digunakan. Kaedah senarai.tambah digunakan untuk menambah elemen dalam senarai. Senarai di sini mengandungi tujuh elemen. MoveNext dan Current digunakan. MoveNext pada asasnya menjejak jika elemen seterusnya ada atau tidak dan mengembalikan boolean yang mungkin benar jika elemen tersedia dan palsu jika tiada elemen manakala arus digunakan untuk mendapatkan semula elemen semasa.
Output:
Kebaikan & keburukan diterangkan di bawah
Jadi untuk melintasi urutan nilai, iterator boleh digunakan dengan pernyataan foreach. Hasil boleh digunakan beberapa kali dengan iterator untuk mengembalikan elemen. Ia mudah untuk dilaksanakan dan agak berguna.
Atas ialah kandungan terperinci Iterator dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!