Introduzione agli iteratori in C #

Gli iteratori sono il metodo utilizzato per recuperare gli elementi ed eseguire l'iterazione uno per uno negli array, nell'elenco, ecc. L'istruzione return return viene utilizzata con il metodo iteratore per restituire l'elemento della raccolta e l'interruzione del rendimento viene utilizzata per interrompere l'iterazione . Memorizza sempre la posizione corrente e restituisce l'elemento successivo al momento della successiva iterazione. I valori degli oggetti IEnumerable e IEnumerator sono il tipo restituito di rendimento. In questo argomento, apprenderemo su Iteratori in C #.

Metodi di Iteratori C #

Di seguito sono riportati gli esempi per mostrare l'iterazione con vari metodi come il ciclo, il ciclo foreach e gli enumeratori.

1. Per Loop

Esempio 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();
)
)
)

Un ciclo for è composto da tre istruzioni. Inizialmente, l'inizializzazione viene eseguita e quindi condizione che è un'espressione booleana. Dopo che l'iteratore viene eseguito per modificare il valore della variabile inizializzata. Il processo per il ciclo continua fino a quando la condizione non è falsa e quando è falso, il ciclo termina.

L'output del codice sopra è

2. Per ogni ciclo

Esempio

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();
)
)
)

Un ciclo foreach lungo all'interno della parola chiave viene utilizzato per iterare gli elementi. La parola chiave viene utilizzata per selezionare l'elemento su ogni iterazione. Il primo elemento viene ripetuto e memorizzato nell'elemento dopo quel secondo elemento e così via. Il numero di iterazioni di foreach dipende dal numero di elementi nella raccolta. In questo esempio, la raccolta è composta da tre valori, quindi il numero di foreach avrà luogo tre volte e visualizzerà i valori.

L'output del codice sopra è

3. Enumeratori

Esempio 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 questo esempio, esiste una matrice dell'elemento che contiene cinque elementi e foreach viene utilizzato per l'iterazione di ciascun elemento. L'istruzione yield viene utilizzata per restituire l'elemento dopo ogni iterazione. L'interfaccia IEnumerable sta memorizzando ogni elemento mentre foreach è usato per visualizzare gli elementi di ritorno dall'iterazione. Questo iteratore viene utilizzato in un metodo.

L'output del codice sopra è

Esempio n. 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 questo esempio, viene utilizzata la raccolta elenco e il metodo list.add viene utilizzato per aggiungere elementi nell'elenco. Qui l'elenco è composto da sette elementi. Una foreach viene utilizzata per l'iterazione di ciascun elemento. L'istruzione yield viene utilizzata per restituire l'elemento dopo ogni iterazione. L'interfaccia IEnumerable sta memorizzando ogni elemento mentre foreach è usato per visualizzare gli elementi di ritorno dall'iterazione.

L'output del codice sopra è

Esempio n. 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 questo esempio, viene generata la serie Fibonacci e l'iteratore viene utilizzato in un operatore. L'implementazione di questo stesso come abbiamo usato gli iteratori in un metodo tranne che in questi operatori è usato per restituire cose.

L'output del codice sopra è

Esempio n. 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();
)
)
)
)

Nell'esempio sopra, viene utilizzata la raccolta elenco. Il metodo List.add viene utilizzato per aggiungere elementi nell'elenco. Qui l'elenco contiene sette elementi. Vengono utilizzati MoveNext e Current. MoveNext sta fondamentalmente monitorando se l'elemento successivo è presente o meno e restituisce valori booleani che possono essere veri se l'elemento è disponibile e falso se non ci sono elementi mentre la corrente viene utilizzata per recuperare l'elemento corrente.

L'output del codice sopra è

Vantaggi e svantaggi di Iterator

Alcuni dei vantaggi sono indicati di seguito:

  1. Gli iteratori possono essere usati come metodo e ottenere accessor.
  2. Può essere usato come operatore o come proprietà.
  3. Gli iteratori sono facili da leggere e da implementare.
  4. Gli iteratori vengono utilizzati con le raccolte generiche e non generiche.

Alcuni degli svantaggi sono indicati di seguito:

  1. Gli iteratori non sono utili nel backtracking di un elenco.
  2. Poiché iteratore memorizza la posizione in modo da non poter aggiornare la struttura iterata.
  3. Gli iteratori non vengono utilizzati nel costruttore statico, nel finalizzatore statico e nel costruttore dell'istanza.

Conclusione - Iteratori in C #

Quindi, per attraversare la sequenza di valori, gli iteratori possono essere usati con l'istruzione foreach. La resa può essere utilizzata più volte con iteratore per restituire gli elementi. È facile da implementare e abbastanza utile.

Articoli consigliati

Questa è una guida per Iteratori in C #. Qui discutiamo gli esempi per mostrare l'iterazione con vari metodi come il ciclo, il ciclo foreach e gli enumeratori. Puoi anche leggere il seguente articolo per saperne di più-

  1. Distruttore in C #
  2. Serie Fibonacci in C #
  3. Sostituzione del metodo in C #
  4. C # per loop
  5. Sostituzione in Java
  6. Lavorare e primi 3 metodi Enum in C #

Categoria: