Uvod u Iteratore u C #

Iteratori su metoda koja se koristi za pronalaženje elemenata i izvodi iteraciju jednu po jednu u nizovima, popisu itd. Izjava o povratu prinosa koristi se s iterator metodom za vraćanje elementa kolekcije i prekid prinosa koristi se za zaustavljanje iteracije, Uvijek pohranjuje trenutnu lokaciju i vraća sljedeći element kada se dogodi sljedeća ponavljanje. Nebrojene i IEnumerator objektne vrijednosti su povratni tip prinosa. U ovoj ćemo temi saznati o Iteratorima u C #.

C # Metode iteratora

Ispod su primjeri za prikaz iteracije s različitim metodama poput petlje, petlje za predradnje i popisivača.

1. Za petlju

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

Petlja za stvaranje sastoji se od tri iskaza. U početku se izvršava inicijalizacija, a zatim uvjet koji je logični izraz. Nakon toga se izvršava iterator za promjenu vrijednosti inicijalizirane varijable. Ovaj postupak za petlju traje dok uvjet nije lažan, a kada je lažan, za petlju prestaje.

Izlaz gornjeg koda je

2. ForEach petlja

Primjer

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

Petlja predradnje unutar ključne riječi koristi se za ponavljanje stavki. Ključna riječ koristi se za odabir stavke na svakoj iteraciji. Prva se stavka ponavlja i pohranjuje u element nakon te druge stavke i tako dalje. Broj iteracija predobre ovisi o broju elemenata u zbirci. U ovom primjeru, zbirka se sastoji od tri vrijednosti pa će se broj predradnje dogoditi tri puta i prikazati vrijednosti.

Izlaz gornjeg koda je

3. Popisivači

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

U ovom primjeru postoji niz elemenata koji sadrži pet elemenata, a za ponavljanje svakog elementa koristi se foreach. Izjava o prinosu koristi se za povratak elementa nakon svake iteracije. Nebrojeno sučelje pohranjuje svaki element, dok se foreach koristi za prikaz povratka elemenata iz iteracije. Taj se iterator koristi u metodi.

Izlaz gornjeg koda je

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

U ovom primjeru za dodavanje elemenata u popis koristi se zbirka popisa, a metoda list.add koristi se za dodavanje elemenata u popis. Ovdje se popis sastoji od sedam elemenata. Za ponavljanje svakog elementa koristi se predigra. Izjava o prinosu koristi se za povratak elementa nakon svake iteracije. Nebrojeno sučelje pohranjuje svaki element, dok se foreach koristi za prikaz povratka elemenata iz iteracije.

Izlaz gornjeg koda je

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

U ovom primjeru generira se Fibonaccijeva serija i iterator se koristi u operatoru. Implementacija istog kao što smo koristili iteratore u metodi, osim što se u ovom operatoru koristi za vraćanje stvari.

Izlaz gornjeg koda je

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

U gornjem primjeru koristi se zbirka popisa. List.add metoda koristi se za dodavanje elemenata u popis. Ovdje popis sadrži sedam elemenata. Koriste se MoveNext i Current. MoveNext u osnovi prati je li sljedeći element prisutan ili ne i vraća boolean što može biti istinito ako je element dostupan i false ako nema elementa dok se za pronalaženje trenutnog elementa koristi struja.

Izlaz gornjeg koda je

Prednosti i nedostaci iteratora

Neke od prednosti navedene su u nastavku:

  1. Iteratori se mogu koristiti kao metoda i dobiti pristup.
  2. Može se koristiti kao operator ili kao imovina.
  3. Iteratori se lako čitaju i lako ih je implementirati.
  4. Iteratori se koriste s generičkim i ne generičkim zbirkama.

U nastavku su navedeni neki nedostaci:

  1. Iteratori nisu korisni u povlačenju popisa.
  2. Kao što iterator pohranjuje položaj, tako da ne možete ažurirati ponovljenu strukturu.
  3. Iteratori se ne koriste u statičkom konstruktoru, statičkom finalu i konstruktoru instanci.

Zaključak - Iteratori u C #

Za kretanje redoslijeda vrijednosti, iteratori se mogu upotrijebiti u izjavi foreach. Prinos se može koristiti više puta s iteratorom za vraćanje elemenata. Jednostavan je za implementaciju i vrlo zgodan.

Preporučeni članci

Ovo je vodič za Iteratore u C #. Ovdje smo raspravljali o primjerima za prikaz iteracije s različitim metodama poput petlje, petlje za predradnje i popisivača. Možete pogledati i sljedeći članak kako biste saznali više -

  1. Destruktor u C #
  2. Fibonaccijeva serija u C #
  3. Poništavanje metode u C #
  4. C # Za petlju
  5. Prevladavanje u Javi
  6. Rad i top 3 enum metode u C #

Kategorija: