Úvod do Iterátorů v C #

Iterátory jsou metoda, která se používá k načtení prvků a provádění iterace jeden po druhém v polích, seznamu atd. Příkaz návratu výnosů se používá s metodou iterátorů k návratu prvku kolekce a konec výnosů se používá k zastavení iterace. . Vždy uloží aktuální umístění a vrátí další prvek, když se uskuteční další iterace. Hodnoty objektů IEnumerable a IEnumerator jsou návratovým typem výnosu. V tomto tématu se dozvíme o Iterátorech v C #.

Metody Iterátorů C #

Níže jsou uvedeny příklady, které ukazují iteraci různými metodami, jako je smyčka, smyčka foreach a enumerátory.

1. Pro smyčku

Příklad č. 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();
)
)
)

Smyčka for for se skládá ze tří příkazů. Nejprve se provede inicializace a poté podmínka, která je booleovským výrazem. Poté je proveden iterátor pro změnu hodnoty inicializované proměnné. Toto pro smyčkový proces pokračuje, dokud není podmínka nepravdivá a když je nepravdivá, pro smyčku končí.

Výstup výše uvedeného kódu je

2. ForEach Loop

Příklad

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

Smyčka foreach podél klíčového slova se používá k iteraci položek. Klíčové slovo se používá k výběru položky v každé iteraci. První položka je iterována a uložena v prvku po této druhé položce atd. Počet iterací foreach závisí na počtu prvků ve sbírce. V tomto příkladu kolekce sestává ze tří hodnot, takže počet foreach se uskuteční třikrát a zobrazí hodnoty.

Výstup výše uvedeného kódu je

3. Enumerátory

Příklad č. 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();
)
)
)
)

V tomto příkladu existuje pole prvku, které obsahuje pět prvků a foreach se používá pro iteraci každého prvku. Příkaz výnos se používá k vrácení prvku po každé iteraci. Rozhraní IEnumerable ukládá každý prvek, zatímco foreach se používá k zobrazení prvků návratu z iterace. Tento iterátor se používá v metodě.

Výstup výše uvedeného kódu je

Příklad č. 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();
)
)
)
)

V tomto příkladu se používá kolekce seznamů a metoda list.add se používá pro přidání prvků do seznamu. Seznam se skládá ze sedmi prvků. Pro iteraci každého prvku se používá foreach. Příkaz výnos se používá k vrácení prvku po každé iteraci. Rozhraní IEnumerable ukládá každý prvek, zatímco foreach se používá k zobrazení prvků návratu z iterace.

Výstup výše uvedeného kódu je

Příklad č. 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();
)
)
)
)

V tomto příkladu je generována řada Fibonacci a iterátor je použit v operátorovi. Implementace stejného způsobu, jakým jsme použili iterátory v metodě, s výjimkou toho, že v tomto operátoru se vrací věci.

Výstup výše uvedeného kódu je

Příklad č. 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();
)
)
)
)

Ve výše uvedeném příkladu je použita kolekce seznamů. Metoda List.add se používá k přidání prvků do seznamu. Seznam obsahuje sedm prvků. Používají se MoveNext a Current. MoveNext v zásadě sleduje, zda je nebo není přítomen další prvek, a vrací boolean, což může být pravda, pokud je prvek k dispozici, a false, pokud není žádný prvek, zatímco aktuální se používá k načtení aktuálního prvku.

Výstup výše uvedeného kódu je

Výhody a nevýhody Iterátoru

Některé z výhod jsou uvedeny níže:

  1. Iterátory lze použít jako metodu a získat přístup.
  2. Může být použit jako operátor nebo jako vlastnost.
  3. Iterátory jsou snadno čitelné a snadno implementovatelné.
  4. Iterátory se používají s generickými a ne-generickými sbírkami.

Některé z nevýhod jsou uvedeny níže:

  1. Iterátory nejsou užitečné při zpětném sledování seznamu.
  2. Jako iterátor ukládá polohu, takže nemůžete aktualizovat iterovanou strukturu.
  3. Iterátory se nepoužívají ve statickém konstruktoru, statickém finalizátoru a konstruktoru instance.

Závěr - Iterátory v C #

Takže pro procházení posloupností hodnot lze iterátory použít s příkazem foreach. Výnos lze s iterátorem použít několikrát k navrácení prvků. Je snadno implementovatelný a docela šikovný.

Doporučené články

Toto je průvodce Iterátory v C #. Zde diskutujeme příklady, abychom ukázali iteraci různými metodami, jako je smyčka, smyčka foreach a enumerátory. Další informace naleznete také v následujícím článku.

  1. Destruktor v C #
  2. Fibonacciho série v C #
  3. Přepsání metody v C #
  4. C # Pro smyčku
  5. Převažující v Javě
  6. Pracovní a top 3 metody výčtu v C #

Kategorie: