Einführung in Iteratoren in C #

Iteratoren sind die Methode, mit der die Elemente abgerufen und eine Iteration nach der anderen in Arrays, Listen usw. ausgeführt werden. Die Anweisung yield return wird zusammen mit der Iterator-Methode verwendet, um das Element der Auflistung zurückzugeben, und yield break wird zum Stoppen der Iteration verwendet . Es speichert immer die aktuelle Position 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 erfahren Sie mehr über Iteratoren in C #.

Methoden für C # -Iteratoren

Im Folgenden finden Sie Beispiele für die Iteration mit verschiedenen Methoden wie der Schleife, der foreach-Schleife und den Enumeratoren.

1. Für Schleife

Beispiel 1

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 ein Iterator ausgeführt, um den Wert der initialisierten Variablen zu ändern. Dieser for-Schleifenprozess wird fortgesetzt, bis die Bedingung falsch ist, und wenn sie falsch ist, wird for-Schleife beendet.

Die Ausgabe des obigen Codes ist

2. Für jede Schleife

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 Durchlaufen 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 usw. gespeichert. Die Anzahl der Iterationen von foreach hängt von der Anzahl der Elemente in der Auflistung ab. In diesem Beispiel besteht die Sammlung aus drei Werten, sodass die Anzahl der foreach-Vorgänge dreimal erfolgt und die Werte angezeigt werden.

Die Ausgabe des obigen Codes ist

3. Enumeratoren

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 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 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 das Element nach jeder Iteration zurückzugeben. IEnumerable interface speichert jedes Element, während foreach verwendet wird, um die Elemente anzuzeigen, die von der Iteration zurückgegeben werden. Dieser Iterator wird in einer Methode verwendet.

Die Ausgabe des obigen Codes ist

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 GetList()
(
List list = new List();
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 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 wird zum Hinzufügen von Elementen zur Liste verwendet. Hier besteht die Liste aus sieben Elementen. Ein foreach wird für die Iteration jedes Elements verwendet. Die yield-Anweisung wird verwendet, um das Element nach jeder Iteration zurückzugeben. IEnumerable interface speichert jedes Element, während foreach verwendet wird, um die Elemente anzuzeigen, die von der Iteration zurückgegeben werden.

Die Ausgabe des obigen Codes ist

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 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 entspricht der von uns verwendeten Iteratoren in einer Methode, mit der Ausnahme, dass in diesen Operatoren Dinge zurückgegeben werden.

Die Ausgabe des obigen Codes ist

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 list = new List();
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.Enumerator a = list.GetEnumerator();
Write(a);
)
static void Write(IEnumerator a)
(
while (a.MoveNext())
(
int value = a.Current;
Console.WriteLine(value);
Console.ReadKey();
)
)
)
)

Im obigen Beispiel wird die Listensammlung verwendet. Mit der List.add-Methode werden Elemente zur Liste hinzugefügt. Die 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 aktuelle Wert zum Abrufen des aktuellen Elements verwendet wird.

Die Ausgabe des obigen Codes ist

Vor- und Nachteile von Iterator

Einige der Vorteile sind nachfolgend aufgeführt:

  1. Iteratoren können als Methode verwendet werden und erhalten Zugriffsmethoden.
  2. Es kann als Operator oder als Eigenschaft verwendet werden.
  3. Iteratoren sind leicht zu lesen und leicht zu implementieren.
  4. Iteratoren werden mit den generischen und nicht generischen Auflistungen verwendet.

Einige der Nachteile sind nachfolgend aufgeführt:

  1. Iteratoren sind beim Zurückverfolgen einer Liste nicht hilfreich.
  2. Da der Iterator die Position speichert, können Sie die iterierte Struktur nicht aktualisieren.
  3. Iteratoren werden im statischen Konstruktor, im statischen Finalizer und im Instanzkonstruktor nicht verwendet.

Fazit - Iteratoren in C #

Um die Folge von Werten zu durchlaufen, können Iteratoren mit der foreach-Anweisung verwendet werden. Yield kann mit Iterator mehrfach verwendet werden, um die Elemente zurückzugeben. Es ist einfach zu implementieren und sehr praktisch.

Empfohlene Artikel

Dies ist eine Anleitung zu Iteratoren in C #. Hier diskutieren wir die Beispiele, um die Iteration mit verschiedenen Methoden wie der Schleife, der foreach-Schleife und den Enumeratoren zu zeigen. Sie können auch den folgenden Artikel lesen, um mehr zu erfahren.

  1. Destruktor in C #
  2. Fibonacci-Serie in C #
  3. Methodenüberschreibung in C #
  4. C # For-Schleife
  5. In Java überschreiben
  6. Arbeits- und Top-3-Aufzählungsmethoden in C #