Introdução aos Iteradores em C #

Iteradores são o método usado para recuperar os elementos e executam a iteração um a um em matrizes, lista etc. A instrução de retorno de rendimento é usada com o método iterador para retornar o elemento da coleção e a quebra de rendimento é usada para interromper a iteração . Ele sempre armazena o local atual e retorna o próximo elemento quando a próxima iteração ocorrer. Os valores de objeto IEnumerable e IEnumerator são o tipo de retorno de rendimento. Neste tópico, vamos aprender sobre Iteradores em C #.

Métodos de Iteradores C #

Abaixo estão os exemplos para mostrar a iteração com vários métodos, como loop, loop foreach e enumeradores.

1. Para Loop

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

Um loop for consiste em três instruções. Inicialmente, a inicialização é executada e depois condiciona, que é uma expressão booleana. Depois que o iterador é executado para alterar o valor da variável inicializada. Esse processo for loop continua até que a condição seja falsa e, quando for falsa, o loop for finalizado.

A saída do código acima é

2. Loop ForEach

Exemplo

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

Um loop foreach ao longo da palavra-chave é usado para iterar itens. A palavra-chave é usada para selecionar o item em cada iteração. O primeiro item é iterado e armazenado no elemento após o segundo item e assim por diante. O número de iterações do foreach depende do número de elementos na coleção. Neste exemplo, a coleção consiste em três valores, para que o número de foreach ocorra três vezes e exiba os valores.

A saída do código acima é

3. Enumeradores

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

Neste exemplo, há uma matriz do elemento que contém cinco elementos e o foreach é usado para a iteração de cada elemento. A declaração de rendimento é usada para retornar o elemento após cada iteração. A interface IEnumerable está armazenando cada elemento, enquanto o foreach é usado para exibir os elementos retornados da iteração. Este iterador é usado em um método

A saída do código acima é

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

Neste exemplo, a coleção de listas é usada e o método list.add é usado para adicionar elementos na lista. Aqui a lista consiste em sete elementos. Um foreach é usado para a iteração de cada elemento. A declaração de rendimento é usada para retornar o elemento após cada iteração. A interface IEnumerable está armazenando cada elemento, enquanto o foreach é usado para exibir os elementos retornados da iteração.

A saída do código acima é

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

Neste exemplo, a série Fibonacci é gerada e o iterador é usado em um operador. A implementação dessa mesma forma como usamos iteradores em um método, exceto que, neste operador, é usada para retornar coisas.

A saída do código acima é

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

No exemplo acima, a coleção de listas é usada. O método List.add é usado para adicionar elementos na lista. Aqui a lista contém sete elementos. MoveNext e Current são usados. MoveNext basicamente rastreia se o próximo elemento está presente ou não e retorna booleano, o que pode ser verdadeiro se o elemento estiver disponível e false se não houver nenhum elemento, enquanto a corrente é usada para recuperar o elemento atual.

A saída do código acima é

Vantagens e desvantagens do iterador

Algumas das vantagens são mencionadas abaixo:

  1. Os iteradores podem ser usados ​​como um método e obter acessador.
  2. Pode ser usado como operadores ou como uma propriedade.
  3. Os iteradores são fáceis de ler e fáceis de implementar.
  4. Os iteradores são usados ​​com as coleções genéricas e não genéricas.

Algumas das desvantagens são mencionadas abaixo:

  1. Os iteradores não são úteis no retorno de uma lista.
  2. Como o iterador armazena a posição, você não pode atualizar a estrutura iterada.
  3. Os iteradores não são usados ​​no construtor estático, no finalizador estático e no construtor de instância.

Conclusão - Iteradores em C #

Portanto, para percorrer a sequência de valores, os iteradores podem ser usados ​​com a instrução foreach. O rendimento pode ser usado várias vezes com o iterador para retornar os elementos. É fácil de implementar e bastante útil.

Artigos recomendados

Este é um guia para Iteradores em C #. Aqui discutimos os exemplos para mostrar a iteração com vários métodos, como loop, loop foreach e enumeradores. Você também pode consultar o seguinte artigo para saber mais:

  1. Destruidor em c #
  2. Série Fibonacci em C #
  3. Substituição de método em C #
  4. C # para loop
  5. Substituindo em Java
  6. Trabalho e os 3 principais métodos enum em C #