Sissejuhatus C # iteraatoritesse

Iteraatorid on meetod, mida kasutatakse elementide toomiseks ja ükshaaval iteratsiooni tegemiseks massiivides, loendites jms. Saagise tagastamise avaldust kasutatakse iteraatori meetodil kogumielemendi tagastamiseks ja iteratsiooni peatamiseks kasutatakse saagikatkestust. . See salvestab alati praeguse asukoha ja tagastab järgmise elemendi, kui järgmine iteratsioon toimub. IEnumerable ja IEnumerator objekti väärtused on saagikuse tagastamise tüüp. Selles teemas õpime C # iteraatorite kohta.

C # Iteraatorite meetodid

Allpool on toodud näited, mis näitavad iteratsiooni erinevate meetoditega, näiteks ahela, ettejuhtuva silmuse ja loenduritega.

1. Loopi jaoks

Näide nr 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();
)
)
)

Silmuse A for koosneb kolmest avaldusest. Alguses käivitatakse lähtestamine ja seejärel tingimus, mis on tõeväärtuse avaldis. Pärast seda käivitatakse initsialiseeritud muutuja väärtuse muutmiseks iteraator. See silmusprotsess jätkub seni, kuni tingimus on vale ja kui see on vale, siis silmuse jaoks lõpeb.

Ülaltoodud koodi väljund on

2. ForEach Loop

Näide

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

Üksuste iteratsiooniks kasutatakse märksõna sees olevat foreach-silmust. Märksõna kasutatakse üksuse valimiseks igal iteratsioonil. Esimest üksust korratakse ja talletatakse elemendis pärast seda teist elementi jne. Jutluse iteratsiooni arv sõltub kollektsiooni elementide arvust. Selles näites koosneb kollektsioon kolmest väärtusest, nii et ettekuulutamine toimub kolm korda ja kuvatakse väärtused.

Ülaltoodud koodi väljund on

3. Loendajad

Näide nr 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();
)
)
)
)

Selles näites on elemendi massiiv, mis sisaldab viit elementi ja iga elemendi kordamiseks kasutatakse jutumärki. Saagikusavaldust kasutatakse elemendi tagastamiseks pärast iga iteratsiooni. IEnumeerne liides salvestab iga elemendi, samas kui jutumärki kasutatakse iteratsioonist tagasitulevate elementide kuvamiseks. Seda iteraatorit kasutatakse meetodis.

Ülaltoodud koodi väljund on

Näide 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();
)
)
)
)

Selles näites kasutatakse loendikogumikku ja elementide lisamiseks loendisse meetodit list.add. Siin koosneb loetelu seitsmest elemendist. Iga elemendi kordamiseks kasutatakse jutumärki. Saagikusavaldust kasutatakse elemendi tagastamiseks pärast iga iteratsiooni. IEnumeerne liides salvestab iga elemendi, samas kui jutumärki kasutatakse iteratsioonist tagasitulevate elementide kuvamiseks.

Ülaltoodud koodi väljund on

Näide 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();
)
)
)
)

Selles näites genereeritakse Fibonacci seeria ja iteraatorit kasutatakse operaatoris. Selle sama rakendamine, mida kasutasime iteraatorite kasutamisel meetodis, välja arvatud see, et selles operaatorites kasutatakse asjade tagastamist.

Ülaltoodud koodi väljund on

Näide 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();
)
)
)
)

Ülaltoodud näites kasutatakse loendikogu. Elementide lisamiseks loendisse kasutatakse meetodit List.add. Siin on seitse elementi. Kasutatakse funktsiooni MoveNext ja Current. MoveNext jälgib põhimõtteliselt järgmise elemendi olemasolu või puudumist ning tagastab tõeväärtuse, mis võib olla tõene, kui element on saadaval, ja vale, kui elementi pole, samas kui praegust kasutatakse praeguse elemendi toomiseks.

Ülaltoodud koodi väljund on

Iteraatori eelised ja puudused

Allpool on ära toodud mõned eelised:

  1. Iteraatoreid saab kasutada meetodina ja saada juurdepääs.
  2. Seda saab kasutada operaatoritena või varana.
  3. Iteraatoreid on lihtne lugeda ja hõlpsasti teostada.
  4. Iteraatoreid kasutatakse koos geneeriliste ja mitte-geneeriliste kogudega.

Allpool on ära toodud mõned puudused:

  1. Iteraatoritest pole loendi tagasiulatuvalt kasu.
  2. Kuna iteraator salvestab positsiooni, ei saa te itereeritud struktuuri värskendada.
  3. Iteraatoreid staatilises konstruktoris, staatilises viimistlejas ja eksemplari konstruktoris ei kasutata.

Järeldus - C # iteraatorid

Väärtuste jada läbimiseks saab iteraatoreid kasutada koos foreachi avaldusega. Elementide tagastamiseks võib saagist iteraatoriga mitu korda kasutada. Seda on lihtne rakendada ja üsna mugav.

Soovitatavad artiklid

See on juhend C # iteraatoritele. Siin käsitleme näiteid, mis näitavad iteratsiooni erinevate meetoditega, nagu silmus, ettejuhtuv silmus ja loendajad. Lisateabe saamiseks võite vaadata ka järgmist artiklit -

  1. C-tüüpi hävitaja
  2. Fibonacci seeria C #
  3. Meetodi ülimuslik C #
  4. C # silmuse jaoks
  5. Ülekaalus Java
  6. Töötavad ja 3 parimat Enumi meetodit C # -s

Kategooria: