Оператор yield в C#

Перечисление представляет собой последовательность значений, которые программа может перечислить, например, используя цикл foreach. В C# вы можете использовать оператор yield, чтобы создать метод, который возвращает перечисление. Метод, который строит перечисление, должен возвращать тип IEnumerable. Он должен использовать yield return, чтобы указать значение, которое должно быть возвращено в перечислении.

Следующий код показывает, как этот пример создает метод Primes, который возвращает простые числа ниже заданного максимального значения.

В этом примере метод static, потому что ему не нужно ничего знать о форме, но в общем случае метод перечисления не должен быть static.. р>

Метод возвращает перечисление целых чисел, поэтому его возвращаемый тип IEnumerable & lt; int & gt;.

В коде используется сито Эратосфена для нахождения простых чисел. Для объяснения этого метода см. Используйте сито Эратосфена, чтобы найти простые числа в C# .

Единственная разница между этой программой и предыдущей заключается в том, что делает метод, когда он находит премьер. Вместо прямого добавления значения в форму ListBox формы, метод перечисления использует оператор yield return, чтобы добавить значение в перечисление.

Следующий код показывает, как программа использует перечисление.

Когда форма загружается, этот код использует цикл foreach для перечисления значений, возвращаемых методом Primes, добавляя их в форму ListBox .

Итак, как это отличается от написания метода Primes, который просто создает List & lt; int & gt; или какую-либо другую коллекцию и заполняет ее значениями? Результат аналогичен, но метод очень отличается. Когда программа вызывает метод Primes, этот метод начинает выполняться. Когда этот метод выполняет инструкцию yield, элемент управления возвращается к вызывающему коду для обработки полученного значения. Когда цикл foreach переходит к следующему значению, элемент управления возвращается к методу Primes, чтобы он мог генерировать другое значение.

Источник: http://csharphelper.com/blog/2017/04/use-the-yield-statement-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *