Помогите мне разобраться в ключевом слове yield
в asp.net(C#)
.Что такое доходность ?, и какое преимущество дает доход в asp.net?
ответ
Возврат дохода автоматически создает счетчик для вас.
http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx
Таким образом, вы можете сделать что-то вроде
//pseudo code:
while(get_next_record_from_database)
{
yield return your_next_record;
}
Это позволяет быстро создать коллекцию объектов (счетчику), который вы можете перебрать и извлечения записей. Оператор return yield обрабатывает весь код, необходимый для создания перечислителя для вас.
Большая часть оператора возврата доходности состоит в том, что вам не нужно загружать все элементы в коллекции, прежде чем возвращать коллекцию вызывающему методу. Он позволяет получить lazy loading из коллекции, поэтому вы не платите штраф за доступ сразу.
Когда использовать Yield Return.
yield
используется в качестве синтаксического сахара, чтобы вернуть объект IEnumerable<T>
или IEnumerator<T>
, не используя собственный класс, реализующий эти интерфейсы.
yield
позволяет испускать IEnumerable, где вы обычно возвращаете более конкретный тип (например, IList).
This is a pretty good example of how it can simplify your code and clarify your intent. Что касается того, где вы будете использовать его, где бы вы ни находились на своих страницах, которые вам нужны для итерации по коллекции, вы могли бы использовать метод, который возвращает IEnumerable вместо List/Dictionary/etc.
Выход - это нечто большее, чем синтаксический сахар или простые способы создания IEnumerables.
Для получения дополнительной информации я проверил блог Justin Etherage, который has a great article explaining more advanced usages of yield.
Абсолютно. Вы не можете полностью оценить «доходность», пока не поймете, как именно он создает для вас конечный автомат. Это невероятно мощно. –
Черт, это полезно. Я знаю, что это старо, но этот пост действительно сделал это для меня. – Terrance
Я написал простой пример, показывающий, как вызывается блок доходности во время цикла посещения коллекции. Проверьте это here.
- 1. Что такое преимущество asp.net mvc?
- 2. Что такое преимущество PID?
- 3. Что такое преимущество структуры?
- 4. Какое преимущество дает Монад нам по Прикладной?
- 5. Что такое отдых, и каково его преимущество
- 6. Что такое преимущество создания роли динамически в asp.net mvc
- 7. Что такое преимущество использования arrayWithCapacity
- 8. Что такое преимущество использования ObjectSet
- 9. Что такое преимущество «с помощью»
- 10. Что такое преимущество использования интерфейсов
- 11. Что такое преимущество использования @ParmDefinition в sp_executesql
- 12. Что такое преимущество использования (функция() {...})() в JavaScript
- 13. Какое преимущество Jikes RVM
- 14. Что такое преимущество [inittest] в ядре
- 15. Что такое использование и преимущество шаблона Yii FormElement
- 16. Какое преимущество DLR в Silverlight?
- 17. Что такое файл plist и в чем его преимущество?
- 18. Что такое прецедент и преимущество класса Anonymous в java?
- 19. Что такое преимущество/соображение, чтобы безымянный массив
- 20. Что такое преимущество постройки на заводе в пластах 2
- 21. Какое преимущество управления распределенным источником?
- 22. Что такое двухсторонняя привязка данных в ASP.NET?
- 23. Какое преимущество предоставляет атрибут ImmutableObject?
- 24. Какое преимущество sync.WaitGroup по каналам?
- 25. Какое преимущество использования INNER JOIN?
- 26. .NET ORMs - Какое преимущество NHibernate (или SubSonic или что-то еще) дает возможность использовать Entity Framework?
- 27. IEnumerable и доходность возврата
- 28. Rspec ожидает доход
- 29. Что такое ASP.NET?
- 30. Что такое ASP.Net MVC?
?? Почему вниз вниз? Я неверен? – spoulson
Да, потому что он отличается от создания IEnumerable и его возврата. –
В этом ответе нет ничего неправильного. –