Do Not Iterate IEnumerable Multiple Times!

Опубликовано: 30 Ноябрь 2023
на канале: Zoran Horvat
7,051
341

Learn more from the video course Beginning Object-Oriented Programming with C# ► https://codinghelmet.com/go/beginning...

When writing a function that receives a sequence of objects you might need to walk the sequence more than once.
Don't do that!
You never know who is calling.
If they had a collection, the wouldn't care.
But the caller might have a dynamic sequence.
Iterating it twice would double the resources required to construct it.
You don't know how much that is and hence your function's performance would be unpredictable.
And worse.
The caller might send you the result of a database query or a similar data source.
You don't want your function to trigger every database query two times!
And worse!
The data source could be a one-shot such as the incoming stream, a socket stream throwing an exception if you try to read it again.
A better design is to request a materialized collection which is safe to iterate multiple times.
For convenience, you can retain that method with IEnumerable but materialize the data yourself if the caller could not.

Thank you so much for watching! Please like, comment & share this video as it helps me a ton!! Don't forget to subscribe to my channel for more amazing videos and make sure to hit the bell icon to never miss any updates.🔥❤️

✅🔔 Become a patron ►   / zoranhorvat  
✅🔔 Subscribe ►    / @zoran-horvat  
⭐ Learn more from video courses:
Beginning Object-oriented Programming with C# ► https://codinghelmet.com/go/beginning...
⭐ Collections and Generics in C# ► https://codinghelmet.com/go/collectio...
⭐ Making Your C# Code More Object-oriented ► https://codinghelmet.com/go/making-yo...
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
⭐ CONNECT WITH ME 📱👨

🌐Become a patron ►   / zoranhorvat  
🌐Buy me a Coffee ► https://ko-fi.com/zoranhorvat
🗳 Pluralsight Courses ► https://codinghelmet.com/go/pluralsight
📸 Udemy Courses ► https://codinghelmet.com/go/udemy
📸 Join me on Twitter ►   / zoranh75  
🌐 Read my Articles ► https://codinghelmet.com/articles
📸 Join me on LinkedIn ►   / zoran-horvat  
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
👨 About Me 👨
Hi, I’m Zoran, I have more than 20 years of experience as a software developer, architect, team lead, and more. I have been programming in C# since its inception in the early 2000s. Since 2017 I have started publishing professional video courses at Pluralsight and Udemy and by this point, there are over 100 hours of the highest-quality videos you can watch on those platforms. On my YouTube channel, you can find shorter video forms focused on clarifying practical issues in coding, design, and architecture of .NET applications.❤️
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
⚡️RIGHT NOTICE:
The Copyright Laws of the United States recognize a “fair use” of copyrighted content. Section 107 of the U.S. Copyright Act states: “Notwithstanding the provisions of sections 106 and 106A, the fair use of a copyrighted work, including such use by reproduction in copies or phono records or by any other means specified by that section, for purposes such as criticism, comment, news reporting, teaching (including multiple copies for classroom use), scholarship, or research, is not an infringement of copyright." This video and our youtube channel, in general, may contain certain copyrighted works that were not specifically authorized to be used by the copyright holder(s), but which we believe in good faith are protected by federal law and the Fair use doctrine for one or more of the reasons noted above.

⭐For copyright or any inquiries, please contact us at [email protected]