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

Итераторы - это метод, который используется для извлечения элементов и выполняет итерацию один за другим в массивах, списке и т. Д. Оператор yield return используется с методом итератора для возврата элемента коллекции, а yield break используется для остановки итерации., Он всегда сохраняет текущее местоположение и возвращает следующий элемент при следующей итерации. Значения объекта IEnumerable и IEnumerator являются возвращаемым типом yield. В этой теме мы собираемся узнать об итераторах в 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();
)
)
)

Цикл for состоит из трех операторов. Сначала выполняется инициализация, а затем условие, которое является логическим выражением. После этого выполняется итератор для изменения значения инициализированной переменной. Этот цикл for продолжается до тех пор, пока условие не станет ложным, а когда оно ложно, цикл завершится.

Вывод вышеуказанного кода

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 зависит от количества элементов в коллекции. В этом примере коллекция состоит из трех значений, поэтому число 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 используется для итерации каждого элемента. Оператор yield используется для возврата элемента после каждой итерации. Интерфейс IEnumerable хранит каждый элемент, тогда как 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 используется для итерации каждого элемента. Оператор yield используется для возврата элемента после каждой итерации. Интерфейс IEnumerable хранит каждый элемент, тогда как 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 в основном отслеживает, присутствует ли следующий элемент или нет, и возвращает логическое значение, которое может быть истинным, если элемент доступен, и ложным, если элемента нет, тогда как текущий используется для получения текущего элемента.

Вывод вышеуказанного кода

Преимущества и недостатки Итератора

Некоторые из преимуществ упомянуты ниже:

  1. Итераторы можно использовать как метод и получить метод доступа.
  2. Его можно использовать как операторы или как свойство.
  3. Итераторы легко читаются и легко реализуются.
  4. Итераторы используются с общими и неуниверсальными коллекциями.

Некоторые из недостатков упомянуты ниже:

  1. Итераторы бесполезны при возврате списка.
  2. Поскольку итератор сохраняет положение, вы не можете обновить итеративную структуру.
  3. Итераторы не используются в статическом конструкторе, статическом финализаторе и конструкторе экземпляров.

Вывод - итераторы в C #

Таким образом, для обхода последовательности значений итераторы могут использоваться с оператором foreach. Выход может быть использован несколько раз с итератором для возврата элементов. Это легко реализовать и довольно удобно.

Рекомендуемые статьи

Это руководство для итераторов в C #. Здесь мы обсудим примеры, чтобы показать итерацию с различными методами, такими как цикл, цикл foreach и перечислители. Вы также можете посмотреть следующую статью, чтобы узнать больше

  1. Деструктор в C #
  2. Ряд Фибоначчи в C #
  3. Переопределение метода в C #
  4. C # для цикла
  5. Переопределение в Java
  6. Рабочие и лучшие 3 метода перечисления в C #