Въведение в итератори в C #

Итераторите са методът, който се използва за извличане на елементите и извършва итерация една по една в масиви, списък и др. Отчетът за връщане на добива се използва с метода на итератора за връщане на елемента от колекцията, а прекъсването на добива се използва за спиране на итерацията, Той винаги съхранява текущото местоположение и връща следващия елемент, когато се извърши следващата итерация. Стойностите на обекта IEnumerable и IEnumerator са възвръщаемият вид на добива. В тази тема ще научим за Iterators в C #.

C # Методи на итератори

По-долу са примерите за показване на итерация с различни методи като цикъл, линия на foreach и изброители.

1. За контур

Пример №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();
)
)
)

Цикълът за цикъл се състои от три отчета. В началото се изпълнява инициализацията и след това условие, което е булев израз. След това итераторът се изпълнява, за да промени стойността на инициализираната променлива. Този процес за цикъл продължава, докато условието е невярно и когато е невярно, за цикъл се прекратява.

Изходът на горния код е

2. ForEach Loop

пример

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

Предварителен цикъл в рамките на ключовата дума се използва за повторение на елементи. Ключовата дума се използва за избор на елемент във всяка итерация. Първият елемент се повтаря и се съхранява в елемент след този втори елемент и така нататък. Броят на повторенията на foreach зависи от броя на елементите в колекцията. В този пример колекцията се състои от три стойности, така че броят на foreach ще се проведе три пъти и ще покаже стойностите.

Изходът на горния код е

3. Изброители

Пример №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();
)
)
)
)

В този пример има масив от елемент, който съдържа пет елемента, и foreach се използва за итерация на всеки елемент. Декларацията за добив се използва за връщане на елемент след всяка итерация. Безброй интерфейс съхранява всеки елемент, докато foreach се използва за показване на елементите, които се връщат от итерацията. Този итератор се използва в метод.

Изходът на горния код е

Пример №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();
)
)
)
)

В този пример се използва колекцията на списъци и се използва методът list.add за добавяне на елементи в списъка. Тук списъкът се състои от седем елемента. Използва се предсказание за итерация на всеки елемент. Декларацията за добив се използва за връщане на елемент след всяка итерация. Безброй интерфейс съхранява всеки елемент, докато foreach се използва за показване на елементите, които се връщат от итерацията.

Изходът на горния код е

Пример №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();
)
)
)
)

В този пример се генерира серията Фибоначи и итераторът се използва в оператор. Изпълнението на това същото, което използвахме итератори в метод, с изключение на това, че в този оператор се използва за връщане на неща.

Изходът на горния код е

Пример №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();
)
)
)
)

В горния пример се използва колекцията от списъци. Метод List.add се използва за добавяне на елементи в списъка. Тук списъкът съдържа седем елемента. MoveNext и Current се използват. MoveNext основно проследява дали следващият елемент присъства или не и връща булева информация, която може да е вярна, ако елементът е наличен и невярен, ако няма елемент, докато текущият се използва за извличане на текущия елемент.

Изходът на горния код е

Предимства и недостатъци на Iterator

Някои от предимствата са споменати по-долу:

  1. Итераторите могат да се използват като метод и да получат аксесоар.
  2. Може да се използва като оператори или като собственост.
  3. Итераторите са лесни за четене и лесни за изпълнение.
  4. Итераторите се използват с родовите и негенеричните колекции.

Някои от недостатъците са споменати по-долу:

  1. Итераторите не са полезни при изтеглянето на списък.
  2. Тъй като итераторът съхранява позицията, така че не можете да актуализирате повторената структура.
  3. Итераторите не се използват в статичния конструктор, статичния финализатор и конструктора на инстанции.

Заключение - Итератори в C #

Така че за преминаване на последователността от стойности, итераторите могат да се използват с оператора foreach. Добивът може да се използва многократно с итератор за връщане на елементите. Той е лесен за изпълнение и доста удобен.

Препоръчителни статии

Това е ръководство за Iterators в C #. Тук обсъждаме примерите за показване на итерация с различни методи като цикъл, линия на предсказване и изброители. Можете също така да разгледате следната статия, за да научите повече-

  1. Разрушител в C #
  2. Серия Фибоначи в C #
  3. Метод отменяне в C #
  4. C # За контур
  5. По-важно в Java
  6. Работа и топ 3 Enum методи в C #