Что такое доходность и в чем преимущество использования доходности в asp .NET? - PullRequest
19 голосов
/ 07 июля 2010

Можете ли вы помочь мне в понимании ключевого слова yield в asp .NET(C#).

Ответы [ 5 ]

15 голосов
/ 07 июля 2010

Возврат доходности автоматически создает счетчик для вас.

http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx

Так что вы можете сделать что-то вроде

//pseudo code:

while(get_next_record_from_database)
{
  yield return your_next_record;
}

Позволяет быстро создать коллекцию объектов (перечислитель), которую вы можете просматривать и извлекать записи. Оператор yield return обрабатывает весь код, необходимый для создания перечислителя.

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

Когда использовать Доходность Return .

5 голосов
/ 07 июля 2010

Выход - это гораздо больше, чем синтетический сахар или простой способ создания IEnumerables.

Для получения дополнительной информации я бы заглянул в блог Джастина Этеража, в котором есть отличная статья, объясняющая более продвинутые способы использования доходности .

1 голос
/ 04 августа 2010

Я написал простой пример, показывающий, как блок yield вызывается во время цикла посещения коллекции. Проверьте это здесь .

1 голос
/ 07 июля 2010

yield используется как синтаксический сахар для возврата объекта IEnumerable<T> или IEnumerator<T> из метода без необходимости реализации собственного класса, реализующего эти интерфейсы.

0 голосов
/ 07 июля 2010

yield позволяет вам генерировать IEnumerable, где вы обычно возвращаете более конкретный тип (например, IList).

Это довольно хороший пример того, как он может упростить ваш коди уточнить ваши намерения .Что касается того, где вы будете его использовать, в любом месте на ваших страницах, где вам нужно перебрать коллекцию, вы можете потенциально использовать метод, который возвращает IEnumerable вместо List / Dictionary / etc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...