Можно ли помочь мне в понимании yield
ключевое слово в asp .NET(C#)
.
Yield return автоматически создает для вас счетчик.
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 заключается в том, что вам не нужно загружать все элементы в коллекции перед возвратом коллекции в вызывающий метод. Это позволяет ленивую загрузку коллекции, поэтому вы не платите штраф за доступ сразу.
Когда использовать Доходность .
Yield - это гораздо больше, чем просто синтаксический сахар или простые способы создания IEnumerables.
Для получения дополнительной информации я бы заглянул в блог Джастина Этеража, в котором есть отличная статья, объясняющая более сложные способы использования yield .
yield
используется как синтаксический сахар для возврата объекта IEnumerable
или IEnumerator
из метод без необходимости реализации вашего собственного класса, реализующего эти интерфейсы.
yield
позволяет выдавать IEnumerable там, где обычно возвращается более конкретный тип (например, IList).
Это довольно хороший пример того, как он может упростить ваш код и прояснить ваши намерения. Что касается того, где вы будете его использовать, в любом месте ваших страниц, которые вам нужно переработать над коллекцией, вы потенциально можете использовать метод, который возвращает IEnumerable вместо List/Dictionary/etc.
Я написал простой пример, показывающий, как блок yield вызывается во время цикла посещения коллекции. Посмотрите здесь .