Úvod do výnosového slova v C #

Výnos je kontextové kľúčové slovo v jazyku C #. Kontextové kľúčové slová sú tie kľúčové slová v jazyku C #, ktoré nie sú vyhradené pre celý program. Skôr sú vyhradené kľúčové slová pre určité časti programu, v ktorých sa dané kľúčové slovo môže použiť. Tieto kľúčové slová sa môžu použiť ako platné identifikátory všade, kde ich relevantnosť neprekladá kompilátorovi žiadny osobitný význam.

Kľúčové slovo výťažnosť označuje, že metóda alebo prístupový pracovník obsahujúci kľúčové slovo je metóda / prístupový iterátor. Metóda / prístupový iterátor je ten, ktorý nevracia jedinú hodnotu. Skôr sa nazýva v iteráciách a vracia rôzne hodnoty v každej iterácii.

syntax

Syntax kľúčového slova výnos je veľmi jednoduchá. Musíte jednoducho zadať kľúčové slovo pred príkazom návratu metódy alebo prístupového bodu.

yield return ;

OR

yield break;

Toto sú dve implementácie kľúčového slova. Pri použití s ​​príkazom návratu výnosové kľúčové slovo vracia nasledujúcu hodnotu vypočítanú z výrazu, kým nie sú splnené podmienky ukončenia výrazu. Pri použití s ​​kľúčovým slovom prerušenie výnosové kľúčové slovo preruší iteráciu a vykonávanie programu vychádza z metódy / prístupového kľúča.

Ako funguje kľúčové slovo výnos v C #?

  1. Ako teda kľúčové slovo v C #? Aká je interná implementácia kľúčového slova v kompilátore C #? Poďme to pochopiť. Metódu obsahujúcu kľúčové slovo výťažnosť môže spotrebovať iteračná slučka, ako napríklad dotaz foreach alebo LINQ. Každá iterácia slučky volá metódu. Kód v metóde sa vykoná, až kým nenastane príkaz návratu výnosov alebo prerušenia výnosov.
  2. Aktuálna pozícia vykonávania v metóde zostáva zachovaná a ďalšia iterácia pokračuje od miesta, kde sa skončila v predchádzajúcej iterácii.
  3. Bolo to jednoduché, však? Poďme sa dostať do technickej implementácie toho istého. Metóda obsahujúca kľúčové slovo výnos musí vždy vrátiť IEnumerable alebo IEnumerator. Vždy, keď kompilátor narazí na kľúčové slovo výnos, vie, že metóda je spotrebovaná iterátorom. Pri zavolaní metódy kompilátor nevykoná telo metódy tak, ako obvykle.
  4. Skôr vykoná telo metódy a vráti zostavenú množinu IEnumerables do konzumujúcej premennej iterátora. Pri každom volaní metódy kompilátor vyhľadá príkaz na výnos a pozastaví vykonanie tohto príkazu. Ďalšia iterácia slučky pokračuje vo vykonávaní z posledného pozastaveného miesta. Toto pokračuje až do stavu ukončenia slučky alebo príkazu na prerušenie výťažku. Na uloženie informácií o stave po každej iterácii kompilátor vytvorí stroj štátu.

Príklady výnosového slova v C #

Uvažujme niekoľko príkladov:

Príklad č. 1 - Metóda

V nasledujúcom príklade sa generuje séria Fibonacci pomocou kľúčového slova výnos.

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

Príklad č. 2 - Accessor

Nasledujúci príklad používa kľúčové slovo výnos s prístupovým prvkom get.

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

Príklad č. 3 - výnosový výnos

Nasledujúci príklad ukazuje použitie výkazu prerušenia výnosov. Iterácia sa ukončí, len čo sa nájde číslo v sérii alebo sa dosiahne maximálny limit vyhľadávania.

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

Ak zmeníme elementToFind 1234, výstup bude -

pravidlá

1) Každý prvok sa musí vrátiť jeden po druhom pomocou výpisu výnosov.
2) Návratový typ musí byť IEnumerable alebo IEnumerator.
3) Nemôžete ho používať v kľúčových slovách, odkazoch alebo mimo kľúčových slov s výnosom.
4) Kľúčové slovo výnos sa nedá použiť s výrazmi Lambda ani anonymnými metódami.
5) Výkaz návratnosti výnosov nemôže byť vo vnútri bloku try-catch. Môže to byť vnútri bloku na vyskúšanie.
6) Výkaz prerušenia výnosov nemôže byť vo vnútri bloku try-final. Môže to byť vnútri bloku na vyskúšanie.

výhody

Kľúčové slovo výťažnosť šetrí potrebu vytvárať dočasné kolekcie. Pred vrátením údajov z metódy nemusíte vytvárať dočasné kolekcie. Stav vykonávania metódy je tiež zachovaný, a preto sa nemusí v kóde explicitne ukladať.

Záver - Výnosové slovo v C #

Z tohto článku sme sa dozvedeli, že ako získať kľúčové slovo, je veľmi užitočné kľúčové slovo v jazyku C #. Pomáha kódovať zložité problémy s čo najmenším počtom riadkov a tiež uľahčuje pochopenie kódu. Bol to článok na pokročilej úrovni o ceste C #. Odporúča sa skúsiť použiť kľúčové slovo v kóde, aby ste si vyskúšali praktický tréning.

Odporúčané články

Toto je príručka pre výnosové kľúčové slovo v jazyku C #. Tu diskutujeme o tom, ako dosiahnuť výnosnosť kľúčového slova v jazyku C #, s príkladmi, výhodami a pravidlami. Viac informácií nájdete aj v nasledujúcom článku -

  1. Prečíslenie v C #
  2. Mená v C #
  3. Ukazovatele v C #
  4. Destruktor v C #
  5. Kľúčové slová PHP
  6. Iterátor v Jave
  7. Pracovné a najlepšie 3 metódy výčtu v C #
  8. Fibonacciho séria v JavaScripte s príkladmi
  9. Kompletný Sprievodca Destructor v PHP

Kategórie: