Iteratoren sind die Methode, die zum Abrufen der Elemente verwendet wird und die Iteration einzeln in Arrays, Listen usw. durchführt. Die Yield-Return-Anweisung wird mit der Iterator-Methode verwendet, um das Element der Sammlung zurückzugeben, und Yield Break wird dazu verwendet Stoppen Sie die Iteration. Es speichert immer den aktuellen Standort und gibt das nächste Element zurück, wenn die nächste Iteration stattfindet. IEnumerable- und IEnumerator-Objektwerte sind der Rückgabetyp von yield. In diesem Thema lernen wir etwas über Iteratoren in C#.
Im Folgenden finden Sie Beispiele zur Darstellung der Iteration mit verschiedenen Methoden wie der Schleife, der foreach-Schleife und Enumeratoren.
Beispiel:
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(); } } }
Eine for-Schleife besteht aus drei Anweisungen. Zuerst wird die Initialisierung ausgeführt und dann die Bedingung, die ein boolescher Ausdruck ist. Danach wird der Iterator ausgeführt, um den Wert der initialisierten Variablen zu ändern. Dieser for-Schleifenprozess wird fortgesetzt, bis die Bedingung falsch ist. Wenn sie falsch ist, wird die for-Schleife beendet.
Ausgabe:
Beispiel:
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(); } } }
Eine foreach-Schleife innerhalb des Schlüsselworts wird zum Iterieren von Elementen verwendet. Das Schlüsselwort wird verwendet, um das Element bei jeder Iteration auszuwählen. Das erste Element wird iteriert und im Element nach dem zweiten Element gespeichert und so weiter. Die Anzahl der foreach-Iterationen hängt von der Anzahl der Elemente in der Sammlung ab. In diesem Beispiel besteht die Sammlung aus drei Werten, sodass die Anzahl der foreach dreimal erfolgt und die Werte angezeigt werden.
Ausgabe:
Beispiel #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(); } } } }
In diesem Beispiel gibt es ein Array des Elements, das fünf Elemente enthält, und foreach wird für die Iteration jedes Elements verwendet. Die yield-Anweisung wird verwendet, um nach jeder Iteration ein Element zurückzugeben. Die IEnumerable-Schnittstelle speichert jedes Element, während foreach verwendet wird, um die von der Iteration zurückgegebenen Elemente anzuzeigen. Dieser Iterator wird in einer Methode verwendet.
Ausgabe:
Beispiel #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(); } } } }
In diesem Beispiel wird die Listensammlung verwendet und die Methode list.add zum Hinzufügen von Elementen zur Liste verwendet. Hier besteht die Liste aus sieben Elementen. Für die Iteration jedes Elements wird ein foreach verwendet. Die yield-Anweisung wird verwendet, um nach jeder Iteration ein Element zurückzugeben. Die IEnumerable-Schnittstelle speichert jedes Element, während foreach verwendet wird, um die aus der Iteration zurückgegebenen Elemente anzuzeigen.
Ausgabe:
Beispiel #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(); } } } }
In diesem Beispiel wird die Fibonacci-Reihe generiert und der Iterator in einem Operator verwendet. Die Implementierung davon ist die gleiche wie bei der Verwendung von Iteratoren in einer Methode, außer dass in dieser Operatoren verwendet werden, um Dinge zurückzugeben.
Ausgabe:
Beispiel #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(); } } } }
Im obigen Beispiel wird die Listensammlung verwendet. Die List.add-Methode wird verwendet, um Elemente zur Liste hinzuzufügen. Diese Liste enthält sieben Elemente. MoveNext und Current werden verwendet. MoveNext verfolgt grundsätzlich, ob das nächste Element vorhanden ist oder nicht, und gibt einen booleschen Wert zurück, der wahr sein kann, wenn das Element verfügbar ist, und falsch, wenn kein Element vorhanden ist, während der Strom zum Abrufen des aktuellen Elements verwendet wird.
Ausgabe:
Die Vor- und Nachteile werden im Folgenden erläutert
Um die Wertefolge zu durchlaufen, können Iteratoren mit der foreach-Anweisung verwendet werden. Yield kann mit dem Iterator mehrmals verwendet werden, um die Elemente zurückzugeben. Es ist einfach zu implementieren und sehr praktisch.
Das obige ist der detaillierte Inhalt vonIteratoren in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!