Prinos ključne riječi u C # - Kako funkcionira ključna riječ prinosa u C #? - Primjeri

Sadržaj:

Anonim

Uvod u ključnu riječ o prinosu u C #

Prinos je kontekstualna ključna riječ u C #. Kontekstualne ključne riječi su one ključne riječi u C # koje nisu rezervirane za cjelokupni program. Oni su rezervirane ključne riječi za određene dijelove programa u kojima se ključna riječ može relevantno koristiti. Ove ključne riječi mogu se koristiti kao valjani identifikatori tamo gdje njihova relevantnost ne daje posebno značenje prevoditelju.

Ključna riječ prinosa označava da je metoda ili pristupnik koji sadrži ključnu riječ metoda iteratora / pristupnik. Metoda iteratora / pristupnik je ona koja ne vraća niti jednu vrijednost. Umjesto toga, naziva se u iteracijama i vraća različite vrijednosti u svakoj iteraciji.

Sintaksa

Sintaksa ključne riječi u prinosu prilično je jednostavna. Jednostavno morate specificirati ključnu riječ prije povratne izjave metode ili pristupa.

yield return ;

ILI

yield break;

To su dvije implementacije ključne riječi. Kada se koristi s povratnom izjavom, ključna riječ prinosa vraća sljedeću vrijednost izračunatu iz izraza, dok se ne ispuni izlazni uvjet izraza. Kada se koristi s ključnom riječ break, ključna riječ prinos prekida iteraciju i izvršavanje programa izlazi iz metode / pristupa.

Kako funkcionira ključna riječ prinosa u C #?

  1. Dakle, kako riječ s ključnim riječima u C #? Koja je unutarnja implementacija ključne riječi u C # prevoditelju? Da razumijemo. Metoda koja sadrži ključnu riječ prinosa može se potrošiti u iteracijskoj petlji kao što je foreach ili LINQ upit. Svaka iteracija petlje upućuje poziv na metodu. Kôd u metodi izvršava se sve dok se ne nađe izjava o prinosu ili prijenosu prinosa.
  2. Trenutačni položaj izvršenja u metodi je zadržan i slijedeća se iteracija nastavlja tamo gdje je prekinuta u prethodnoj iteraciji.
  3. Ovo je bilo jednostavno, zar ne? Ulazimo u tehničku provedbu istog. Metoda koja sadrži ključnu riječ prinosa mora uvijek vratiti IEnumerable ili IEnumerator. Kad god se prevoditelj nađe u ključnoj riječi prinosa, zna da metodu koristi iterator. Kad se metoda nazove, prevoditelj ne izvršava tijelo metode kao što to obično čini.
  4. Umjesto toga, izvršava tijelo metode i vraća sastavljeni skup IEnumerables u varijablu iteratora koji troši potrošnju. Pri svakom pozivu metode, prevoditelj traži izjavu o prinosu i zaustavlja izvršenje te izjave. Sljedeća iteracija petlje nastavlja izvršenje s posljednje zaustavljene lokacije. To se nastavlja sve do trenutka izlaza petlje ili izjave o prekidu prinosa. Da bi pohranio informacije o stanju nakon svake iteracije, prevoditelj stvara državni stroj.

Primjeri prinosa ključne riječi u C #

Razmotrimo nekoliko primjera:

Primjer 1 - Metoda

Primjer u nastavku generira Fibonaccijevu seriju koristeći ključnu riječ prinos.

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

Primjer br. 2 - Pristupnik

Sljedeći primjer koristi prinosnu riječ s pristupom 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; )
)
)

Primjer br. 3 - prekid prinosa

Sljedeći primjer prikazuje upotrebu izjave o prinosu. Ponavljanje se prekida čim se nađe broj u nizu ili se dosegne maksimalna granica pretraživanja.

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

Ako promijenimo element elementomToFind 1234, izlaz će biti -

pravila

1) Svaki se element mora vratiti jedan po jedan koristeći izjavu prinosa.
2) Vrsta povratka mora biti IEnumerable ili IEnumerator.
3) Ne možete ga koristiti u, ref, ili out ključne riječi s prinosom.
4) Ključna riječ prinosa ne može se koristiti s Lambda izrazima ili anonimnim metodama.
5) Izjava o prinosu ne može biti unutar pokusnog bloka. To može biti unutar bloka za pokušaj konačno.
6) Izjava o prekidu prinosa ne može biti unutar bloka pokušaja konačno. Može biti unutar bloka pokušaja ulova.

prednosti

Prirodna ključna riječ štedi potrebu za stvaranjem privremenih kolekcija. Ne morate stvarati privremene zbirke za pohranjivanje podataka prije nego što se vrate iz metode. Također, stanje izvršenja metode se zadržava i stoga nije potrebno izričito pohraniti u kod.

Zaključak - Prinos ključne riječi u C #

Iz ovog članka smo saznali kako je donošenje ključne riječi vrlo korisna ključna riječ u C #. Ona pomaže kod složenih problema s što manje redaka, a također olakšava razumijevanje koda. Ovo je članak na naprednoj razini o putovanju C #. Preporučuje se isprobati i koristiti ključnu riječ u vašem kodu kako biste dobili nekoliko praktičnih praksi.

Preporučeni članci

Ovo je vodič za Prinos ključne riječi u C #. Ovdje smo raspravljali o tome kako iskoristiti ključne riječi u C # s primjerima, prednostima i pravilima. Možete pogledati i sljedeći članak da biste saznali više -

  1. Prevladavanje u C #
  2. Prostori imena u C #
  3. Pokazivači u C #
  4. Destruktor u C #
  5. PHP Ključne riječi
  6. Iterator u Javi
  7. Rad i top 3 enum metode u C #
  8. Serija Fibonaccije u JavaScriptu s primjerima
  9. Kompletni vodič za Destruktor u PHP-u