是否有一个很好的资源可以解释枚举器和自定义枚举器的概念?特别是有一个很好的例子,说明你为什么要自己实现IEnumerable
以及如何有效地使用它?
我偶尔会遇到yield
而我正试图更好地理解它。
答案 0 :(得分:8)
最简单的例子:
IEnumerable<string> GetNames()
{
yield return "Bob";
yield return "Bob's uncle";
yield return "Alice";
yield return "Stacy";
yield return "Stacy's mom";
}
用法:
foreach (var name in GetNames())
{
Console.WriteLine(name);
}
要查看它的实际效果,请在GetNames
方法的每一行上放置一个调试器断点。
答案 1 :(得分:3)
当我了解IEnumerable和IEnumerator时,我发现另一本非常有用的书是Troelsen的Pro C#2008书。它解释了接口包含的内容以及如何使用“yield”关键字构建迭代器。
希望得到这个帮助。
答案 2 :(得分:2)
在您掌握了基础知识之后,还有以下几种资源。
Wes有一篇关于迭代器性能特征的文章:
http://blogs.msdn.com/wesdyer/archive/2007/03/23/all-about-iterators.aspx
如果您对为什么在迭代器块中可以执行的操作有如此多的奇怪限制有疑问,请参阅我的七部分系列文章,了解不同寻常规则的动机:
http://blogs.msdn.com/ericlippert/archive/tags/Iterators/default.aspx
答案 3 :(得分:1)
我发现的最好的例子和参考实际上是来自全能的Jon Skeet的 C#in Depth 书。这不是太昂贵,对于你将学到的关于C#的所有内容都是值得的。
答案 4 :(得分:0)
可以在IEnumerable的MSDN页面找到一个好样本。