Úvod do výnosu klíčového slova v C #

Výnos je kontextové klíčové slovo v jazyce C #. Kontextová klíčová slova jsou ta klíčová slova v C #, která nejsou vyhrazena pro celý program. Spíše jsou vyhrazena klíčová slova pro určité části programu, kde lze klíčové slovo použít. Tato klíčová slova mohou být použita jako platné identifikátory všude tam, kde jejich relevance nepředstavuje kompilátoru zvláštní význam.

Klíčové slovo výnos označuje, že metoda nebo přístupový klíč obsahující klíčové slovo je metoda / přístupový iterátor. Metoda / přístupový iterátor je ten, který nevrací jednu hodnotu. Spíše se nazývá v iteracích a vrací v každé iteraci různé hodnoty.

Syntax

Syntaxe klíčového slova výnos je velmi jednoduchá. Jednoduše musíte zadat klíčové slovo před návratovým příkazem metody nebo přístupu.

yield return ;

NEBO

yield break;

Toto jsou dvě implementace klíčového slova. Při použití s ​​příkazem return vrací klíčové slovo výnos další hodnotu vypočítanou z výrazu, dokud není splněna podmínka ukončení výrazu. Při použití s ​​klíčovým slovem break přeruší výnosové klíčové slovo iteraci a provádění programu vychází z metody / přístupového kódu.

Jak funguje klíčové slovo výnos v C #?

  1. Jak tedy klíčové slovo v C #? Jaká je interní implementace klíčového slova v kompilátoru C #? Pojďme to pochopit. Metodu obsahující klíčové slovo výnos lze spotřebovat pomocí iterátorové smyčky, jako je foreach nebo LINQ dotaz. Každá iterace smyčky volá metodu. Kód v metodě je prováděn, dokud nenastane příkaz návratu výnosů nebo přerušení výnosů.
  2. Aktuální pozice provádění v metodě je zachována a další iterace pokračuje od místa, kde byla ukončena v předchozí iteraci.
  3. Bylo to jednoduché, že? Pojďme se dostat do technické implementace totéž. Metoda obsahující klíčové slovo výnos musí vždy vrátit IEnumerable nebo IEnumerator. Kdykoli kompilátor narazí na klíčové slovo výnos, ví, že metoda je spotřebována iterátorem. Když je metoda volána, kompilátor nespustí tělo metody tak, jak je obvyklé.
  4. Spíše provede tělo metody a vrátí zkompilovanou sadu IEnumerables do konzumující proměnné iterátoru. Při každém volání metody kompilátor vyhledá příkaz výnosu a pozastaví provádění příkazu. Další iterace smyčky pokračuje v provádění z posledního pozastaveného umístění. To pokračuje až do podmínky ukončení smyčky nebo příkazu přerušení výnosů. Pro uložení informací o stavu po každé iteraci vytvoří kompilátor stavový stroj.

Příklady výnosu klíčového slova v C #

Uvažujme několik příkladů:

Příklad č. 1 - Metoda

Následující příklad generuje řadu Fibonacci pomocí klíč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;
)
)
)

Příklad č. 2 - Accessor

Následující příklad používá klíčové slovo výnos s přístupovým přístupem.

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

Příklad č. 3 - výnosový výnos

Následující příklad demonstruje použití příkazu break break. Iterace je ukončena, jakmile je nalezeno číslo v řadě nebo je dosaženo maximálního limitu vyhledávání.

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

Pokud změníme elementToFind 1234, výstup bude -

Pravidla

1) Každý prvek musí být vrácen po jednom pomocí příkazu návratu výnosů.
2) Návratový typ musí být IEnumerable nebo IEnumerator.
3) Nemůžete je použít v klíčových slovech, ref, nebo mimo klíčová slova s ​​výnosem.
4) Klíčové slovo Výnos nelze použít s výrazy Lambda nebo anonymními metodami.
5) Výkaz návratu výnosů nemůže být uvnitř bloku try-catch. Může to být uvnitř bloku try-konečně.
6) Prohlášení o přerušení výnosů nemůže být uvnitř bloku try-konečně. Může to být uvnitř bloku try-catch.

Výhody

Klíčové slovo výnosu šetří potřebu vytvoření dočasných kolekcí. Než se data vrátí z metody, nemusíte vytvářet dočasné kolekce. Stav provádění metody je také zachován, a proto nemusí být v kódu explicitně uložen.

Závěr - výnosové klíčové slovo v C #

Z tohoto článku jsme se dozvěděli, že jak získat klíčové slovo, je velmi užitečné klíčové slovo v C #. Pomáhá kódovat složité problémy s co nejmenším počtem řádků a také usnadňuje pochopení kódu. Byl to článek o pokročilé úrovni na cestě C #. Doporučujeme vyzkoušet a použít klíčové slovo v kódu, abyste získali praktický nácvik.

Doporučené články

Toto je průvodce po výnosu Klíčové slovo v C #. Zde diskutujeme o tom, jak získat klíčové slovo v C #, s příklady, výhodami a pravidly. Další informace naleznete také v následujícím článku -

  1. Převažující v C #
  2. Jmenné prostory v C #
  3. Ukazatele v C #
  4. Destruktor v C #
  5. Klíčová slova PHP
  6. Iterátor v Javě
  7. Pracovní a top 3 metody výčtu v C #
  8. Fibonacciho řada v JavaScriptu s příklady
  9. Kompletní průvodce Destructorem v PHP

Kategorie: