Saagis märksõna C # - Kuidas saagikusmärk töötab C # -s? - Näited

Lang L: none (table-of-contents):

Anonim

Sissejuhatus saagisõna märksõna C #

Saagikus on C # kontekstis märksõna. Kontekstuaalsed märksõnad on C # -s märksõnad, mida ei reserveerita kogu programmile. Pigem on need reserveeritud märksõnad programmi teatud osadele, kus märksõna saab asjakohaselt kasutusele võtta. Neid märksõnu saab kasutada kehtivate identifikaatoritena, kui nende olulisus ei anna kompilaatorile mingit erilist tähendust.

Saagikusmärk näitab, et märksõna sisaldav meetod või aksessuaar on iteraatori meetod / aksessuaar. Iteraatori meetod / juurdepääs on selline, mis ei tagasta ühte väärtust. Pigem kutsutakse seda iteratsioonidena ja see annab igas iteratsioonis erinevad väärtused.

Süntaks

Saagikus märksõna süntaks on üsna lihtne. Enne meetodi või pöördusprogrammi tagasisaatmist peate lihtsalt määrama märksõna.

yield return ;

VÕI

yield break;

Need on märksõna kaks rakendust. Tagastamisavaldusega kasutamisel tagastab saagikussõna järgmine avaldisest arvutatud väärtus, kuni avaldise väljumistingimused on täidetud. Kui kasutada märksõna katkestusmärk, rikub tootluse märksõna iteratsiooni ja programmi täitmine väljub meetodist / lisaseadmest.

Kuidas Yield Keyword töötab C # -s?

  1. Niisiis, kuidas märksõna märksõna C-koodis töötab? Milline on märksõna sisemine teostus C # kompilaatoris? Saame aru. Saagise märksõna sisaldavat meetodit saab kasutada iteraatori ahelas, näiteks foreach või LINQ päring. Igas silmuse iteratsioonis kutsutakse meetodit kasutama. Meetodi koodi täidetakse seni, kuni leitakse tootluse või tootluse katkemise avaldus.
  2. Meetodi täitmise praegune asukoht säilitatakse ja järgmine iteratsioon jätkub sealt, kus see eelmises iteratsioonis pooleli jäi.
  3. See oli lihtne, kas pole? Las tutvutakse sama tehnilise teostusega. Saagikus märksõna sisaldav meetod peab alati tagastama IEnumerable või IEnumerator. Kui kompilaator kohtub tootluse märksõnaga, teab ta, et meetodit kasutab iteraator. Kui meetodit kutsutakse, ei käivita kompilaator meetodi keha nagu tavaliselt.
  4. Pigem käivitab see meetodi korpuse ja tagastab kompileeritud IEnumerables'i komplekti tarbitavale iteraatori muutujale. Iga meetodikõne korral otsib kompilaator välja saagikuse avalduse ja peatab selle täitmise. Järgmine ahela iteratsioon jätkab täitmist viimasest peatatud asukohast. Seda jätkatakse kuni silmuse väljumise tingimuse või tootluse katkemise avaldusega. Olekuteabe salvestamiseks pärast iga iteratsiooni loob kompilaator olekumasina.

C # saagisõna näited

Vaatleme mõnda näidet:

Näide nr 1 - meetod

Allpool toodud näide genereerib Fibonacci seeria, kasutades saagikussõna.

using System;
using System.Collections.Generic;
public class Program
(
public static void Main()
(
foreach (int ele in GetFibonacciSeries(10))
(
Console.Write(ele + "\t");
)
)
public static IEnumerable GetFibonacciSeries(int x)
(
for (int a = 0, b = 0, c = 1; a < x; a++)
(
yield return b;
int temp = b + c;
b = c;
c = temp;
)
)
)

Näide nr 2 - juurdepääs

Järgmises näites kasutatakse saagikuse märksõna koos pääsupärijaga.

using System;
using System.Collections.Generic;
public class Program
(
public static void Main()
(
foreach (Day day in new Days().DaysOfWeek)
(
Console.WriteLine("Day (0) of the week is (1)", day.DayOfWeek, day.DayName);
)
)
public static IEnumerable Show(int x)
(
for (int a = 0, b = 0, c = 1; a < x; a++)
(
yield return b;
int temp = b + c;
b = c;
c = temp;
)
)
public class Days
(
public IEnumerable DaysOfWeek
(
get
(
yield return new Day(DayName = "Sunday", DayOfWeek = 1);
yield return new Day(DayName = "Monday", DayOfWeek = 2);
yield return new Day(DayName = "Tuesday", DayOfWeek = 3);
yield return new Day(DayName = "Wednesday", DayOfWeek = 4);
yield return new Day(DayName = "Thursday", DayOfWeek = 5);
yield return new Day(DayName = "Friday", DayOfWeek = 6);
yield return new Day(DayName = "Saturday", DayOfWeek = 7);
)
)
)
public class Day
(
public string DayName
( get; set; )
public int DayOfWeek
( get; set; )
)
)

Näide nr 3 - saagikuse katkemine

Järgmine näide demonstreerib tootluse katkemise avalduse kasutamist. Iteratsioon lõpetatakse kohe, kui seeriate arv on leitud või otsingu maksimaalne piir on saavutatud.

using System;
using System.Collections.Generic;
public class Program
(
public static void Main()
(
int elementToFind = 21;
int maxElements = 100;
foreach (int ele in FindFibonacciNumber(elementToFind, maxElements))
(
Console.Write("Found the number " + elementToFind + " in Fibonacci series.");
)
)
public static IEnumerable FindFibonacciNumber(int n, int max)
(
for (int a = 0, b = 0, c = 1; true; a++)
(
if (a > max)
(
Console.Write("Searched first " + max + " Fibonacci numbers. Element " + n + " not found");
yield break;
)
if (b == n)
(
yield return b;
yield break;
)
int temp = b + c;
b = c;
c = temp;
)
)
)

Kui muudame elementiToFind 1234, on väljund -

Reeglid

1) Iga element tuleb tagastada ükshaaval, kasutades tootlust.
2) Tagastamise tüüp peab olema IEnumerable või IEnumerator.
3) Sa ei saa seda kasutada saagisega märksõnade viimistlemiseks ega viimiseks välja.
4) Saagikusmärksõna ei saa kasutada Lambda-avaldiste ega anonüümsete meetoditega.
5) Saagi tagastamise avaldus ei saa asuda proovivõtuplokis. See võib asuda proovimise lõpuks blokeeringus.
6) Kasumimäära avaldus ei saa olla lõpliku proovimise blokis. See võib asuda proovivõtuploki sees.

Eelised

Saagikusõnaga kaasneb ajutiste kogude loomise vajadus. Enne andmete tagastamist meetodist ei pea te ajutisi kogumeid looma. Samuti säilitatakse meetodi täitmise olek ja seetõttu ei pea seda koodis sõnaselgelt salvestama.

Järeldus - saagisõna märksõna C #

Sellest artiklist õppisime, et märksõna tootmiseks on C # -s väga kasulik märksõna. See aitab kodeerida keerulisi probleeme võimalikult väheste ridadega ja muudab koodi hõlpsasti mõistetavaks. See oli kõrgtasemel artikkel C # teekonna kohta. Soovitatav on proovida ja kasutada koodi oma koodis, et saaksite kätt praktiseerida.

Soovitatavad artiklid

See on juhend saagikuse märksõna kohta C #. Siin käsitleme näidet märksõnade toimimisest C # koos näidete, eeliste ja reeglitega. Lisateabe saamiseks võite vaadata ka järgmist artiklit -

  1. C-s ülimuslik
  2. Nimeruumid C-numbris
  3. Näpunäited C # -s
  4. C-tüüpi hävitaja
  5. PHP märksõnad
  6. Iteraator Java-s
  7. Töötavad ja 3 parimat Enumi meetodit C # -s
  8. Fibonacci seeria JavaScriptis koos näidetega
  9. PHP hävitaja täielik juhend