Wprowadzenie do słowa kluczowego Yield w C #

Wydajność jest kontekstowym słowem kluczowym w języku C #. Kontekstowe słowa kluczowe to te słowa kluczowe w języku C #, które nie są zastrzeżone dla całego programu. Są to raczej zastrzeżone słowa kluczowe dla niektórych części programu, w których słowo kluczowe można odpowiednio wykorzystać. Te słowa kluczowe mogą być używane jako poprawne identyfikatory wszędzie tam, gdzie ich znaczenie nie nadaje kompilatorowi żadnego specjalnego znaczenia.

Słowo kluczowe wydajności wskazuje, że metoda lub akcesorium zawierające słowo kluczowe jest metodą iteratora / akcesorium. Metoda iteratora / akcesorium to taka, która nie zwraca pojedynczej wartości. Jest on raczej wywoływany w iteracjach i zwraca różne wartości w każdej iteracji.

Składnia

Składnia słowa kluczowego fed jest dość prosta. Musisz tylko określić słowo kluczowe przed instrukcją return metody lub akcesorium.

yield return ;

LUB

yield break;

Są to dwie implementacje słowa kluczowego. W przypadku użycia z instrukcją return słowo kluczowe return zwraca następną wartość obliczoną na podstawie wyrażenia, dopóki warunek wyjścia wyrażenia nie zostanie spełniony. W przypadku użycia ze słowem kluczowym break słowo kluczowe fed przerywa iterację i wykonanie programu wychodzi z metody / akcesorium.

Jak działa słowo kluczowe wydajność w C #?

  1. Jak więc słowo kluczowe w C #? Jaka jest wewnętrzna implementacja słowa kluczowego w kompilatorze C #? Zrozummy Metodę zawierającą słowo kluczowe wydajności można wykorzystać w pętli iteratora, takiej jak zapytanie foreach lub zapytanie LINQ. Każda iteracja pętli wywołuje metodę. Kod w metodzie jest wykonywany do momentu napotkania instrukcji zwrotu lub podziału zysku.
  2. Bieżąca pozycja wykonania w metodzie zostaje zachowana, a następna iteracja jest kontynuowana od miejsca, w którym została przerwana w poprzedniej iteracji.
  3. To było proste, prawda? Przejdźmy do technicznej realizacji tego samego. Metoda zawierająca słowo kluczowe fed musi zawsze zwracać IEnumerable lub IEnumerator. Ilekroć kompilator napotka słowo kluczowe fed, wie, że metoda jest używana przez iterator. Po wywołaniu metody kompilator nie wykonuje treści metody tak jak zwykle.
  4. Raczej wykonuje treść metody i zwraca skompilowany zestaw IEnumerables do konsumującej zmiennej iteratora. Przy każdym wywołaniu metody kompilator szuka instrukcji dochodu i wstrzymuje wykonanie przy tej instrukcji. Następna iteracja pętli kontynuuje wykonywanie od ostatniej wstrzymanej lokalizacji. Trwa to do momentu wyjścia z pętli lub instrukcji podziału dochodu. Aby przechowywać informacje o stanie po każdej iteracji, kompilator tworzy maszynę stanu.

Przykłady słowa kluczowego wydajności w C #

Rozważmy kilka przykładów:

Przykład # 1 - Metoda

Poniższy przykład generuje serię Fibonacciego przy użyciu słowa kluczowego fed.

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

Przykład # 2 - Akcesorium

W poniższym przykładzie użyto słowa kluczowego fed z get accessor.

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

Przykład # 3 - podział zysków

Poniższy przykład demonstruje użycie instrukcji podziału zysku. Iteracja zostaje zakończona, gdy tylko liczba w serii zostanie znaleziona lub zostanie osiągnięty maksymalny limit wyszukiwania.

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

Jeśli zmienimy elementToFind 1234, wynikiem będzie -

Zasady

1) Każdy element musi być zwracany pojedynczo za pomocą instrukcji return return.
2) Typem zwracanym musi być IEnumerable lub IEnumerator.
3) Nie można używać słów kluczowych z wydajnością, do odwoływania się ani z nich.
4) Słowa kluczowego Yield nie można używać z wyrażeniami lambda ani metodami anonimowymi.
5) Instrukcja return return nie może znajdować się w bloku try-catch. Może znajdować się w bloku próbującym na końcu.
6) Instrukcja podziału zysku nie może znajdować się w bloku wypróbowującym. Może znajdować się w bloku try-catch.

Zalety

Słowo kluczowe wydajności oszczędza potrzebę tworzenia kolekcji tymczasowych. Nie trzeba tworzyć kolekcji tymczasowych do przechowywania danych przed ich zwróceniem z metody. Ponadto stan wykonania metody jest zachowany, a zatem nie musi być jawnie zapisywany w kodzie.

Wniosek - słowo kluczowe wydajności w C #

Z tego artykułu dowiedzieliśmy się, że uzyskiwanie słowa kluczowego jest bardzo przydatnym słowem kluczowym w języku C #. Pomaga kodować złożone problemy przy użyciu jak najmniejszej liczby wierszy, a także ułatwia zrozumienie kodu. To był artykuł na poziomie zaawansowanym na temat podróży w C #. Zaleca się, aby spróbować użyć słowa kluczowego w kodzie, aby uzyskać praktyczną praktykę.

Polecane artykuły

To jest przewodnik po Yield Keyword w C #. Tutaj omawiamy, jak uzyskać słowo kluczowe działa w języku C # z przykładami, zaletami i zasadami. Możesz także spojrzeć na następujący artykuł, aby dowiedzieć się więcej -

  1. Przesłanianie w C #
  2. Przestrzenie nazw w C #
  3. Wskaźniki w C #
  4. Niszczyciel w C #
  5. Słowa kluczowe PHP
  6. Iterator w Javie
  7. Praca i 3 najlepsze metody wyliczania w C #
  8. Seria Fibonacciego w JavaScript z przykładami
  9. Kompletny przewodnik po Destructor w PHP