Introducere în Iteratori în C #

Iteratorii sunt metoda folosită pentru preluarea elementelor și efectuarea iterației una câte una în tablouri, listă etc. Declarația de rentabilitate se folosește cu metoda iteratorului pentru a returna elementul colecției și pauză de randament este utilizată pentru a opri iterația. . Stochează întotdeauna locația curentă și returnează următorul element când are loc următoarea iterație. Valorile obiectului IEnumerable și IEnumerator sunt tipul de randament al randamentului. În acest subiect, vom afla despre Iteratori în C #.

C # Metode Ieratoare

Mai jos sunt exemplele pentru a arăta iterarea cu diferite metode precum bucla, bucla de foreach și enumeratori.

1. Pentru Buclă

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

O buclă for constă din trei declarații. La început, inițializarea este executată și apoi condiția care este o expresie booleană. După aceea, iteratorul este executat pentru a modifica valoarea variabilei inițializate. Acest proces pentru buclă continuă până când condiția este falsă și când este falsă, pentru buclă se termină.

Ieșirea codului de mai sus este

2. ForEach Loop

Exemplu

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

O buclă de predach de-a lungul cuvântului cheie este utilizată pentru a itera elemente. Cuvântul cheie este utilizat pentru a selecta elementul pentru fiecare iterație. Primul articol este iterat și stocat în element după acel al doilea articol și așa mai departe. Numărul de iterație a predicției depinde de numărul de elemente din colecție. În acest exemplu, colecția constă din trei valori, astfel încât numărul predicției va avea loc de trei ori și va afișa valorile.

Ieșirea codului de mai sus este

3. Enumeratori

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

În acest exemplu, există un tablou al elementului care conține cinci elemente și predicția este utilizată pentru iterarea fiecărui element. Declarația de randament este utilizată pentru a returna elementul după fiecare iterație. IEnumerabilă interfață stochează fiecare element, în timp ce predica este utilizată pentru a afișa elementele care se întorc din iterație. Acest iterator este utilizat într-o metodă.

Ieșirea codului de mai sus este

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

În acest exemplu, se folosește colecția de liste și se folosește metoda list.add pentru adăugarea de elemente în listă. Aici lista constă din șapte elemente. O predica este folosită pentru iterarea fiecărui element. Declarația de randament este utilizată pentru a returna elementul după fiecare iterație. IEnumerabilă interfață stochează fiecare element, în timp ce predica este utilizată pentru a afișa elementele care se întorc din iterație.

Ieșirea codului de mai sus este

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

În acest exemplu, seria Fibonacci este generată și iteratorul este utilizat într-un operator. Implementarea acestui lucru la fel cum am folosit iteratoarele într-o metodă, cu excepția faptului că în acest operator este folosit pentru a returna lucrurile.

Ieșirea codului de mai sus este

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

În exemplul de mai sus, se folosește colecția de liste. Metoda List.add este utilizată pentru a adăuga elemente în listă. Aici lista conține șapte elemente. MoveNext și Current sunt utilizate. MoveNext urmărește practic dacă următorul element este prezent sau nu și returnează booleanul, ceea ce poate fi adevărat dacă elementul este disponibil și fals dacă nu există niciun element, în timp ce curentul este folosit pentru a prelua elementul curent.

Ieșirea codului de mai sus este

Avantajele și dezavantajele Iteratorului

Unele dintre avantajele sunt menționate mai jos:

  1. Iteratorii pot fi folosiți ca metodă și obțineți accesor.
  2. Poate fi folosit ca operatori sau ca proprietate.
  3. Iteratorii sunt ușor de citit și ușor de implementat.
  4. Iteratorii sunt folosiți cu colecțiile generice și non-generice.

Unele dintre dezavantaje sunt menționate mai jos:

  1. Iteratorii nu sunt utili în backtracking-ul unei liste.
  2. Pe măsură ce iteratorul stochează poziția, nu puteți actualiza structura iterată.
  3. Ieraterele nu sunt utilizate în constructorul static, finalizatorul static și constructorul de instanță.

Concluzie - Ieratorii din C #

Deci, pentru a traversa secvența de valori, iteratoarele pot fi utilizate cu enunțul foreach. Randamentul poate fi folosit de mai multe ori cu iteratorul pentru a returna elementele. Este ușor de implementat și destul de util.

Articole recomandate

Acesta este un ghid pentru Iteratorii din C #. Aici vom discuta exemplele pentru a arăta iterarea cu diferite metode, precum bucla, bucla de foreach și enumeratori. De asemenea, puteți consulta articolul următor pentru a afla mai multe-

  1. Distrugător în C #
  2. Seria Fibonacci în C #
  3. Metoda de suprapunere în C #
  4. C # pentru buclă
  5. Suprasolicitare în Java
  6. Funcționare și Top 3 Metode Enum în C #