阅读帖子时,没有示例就给出了一些要点:
要实现 IEnumerable / IEnumerable,您必须提供一个枚举器:
• 如果该类正在“包装”另一个集合,则返回被包装的集合的枚举数。
• 通过使用yield return 的迭代器。
•通过实例化您自己的 IEnumerator/IEnumerator 实现
(我的宝贝头脑将其解释为)
(第 1 点)
If the class is "wrapping" another collection, by returning the
wrapped collection's enumerator.
会不会是..
class StringCollections
{
//A class is wrapping another collection
string[] names=new string {“Jon Skeet”,”Hamish Smith”,
”Marc Gravell”,”Jrista”,”Joren”};
//by returning the wrapped collection’s enumerator
public IEnumerator GetEnumerator( )
{
// What should I return here ?
//like the following ?
yield return names[0];
yield return names[1];
yield return names[2];
....
(or)
foreach(string str in names)
{
yield return str;
}
}
}
(第 2 点)
•Via an iterator using yield return.(This point was well explained
by Marc Gravell)
第 3 点
By instantiating your own IEnumerator/IEnumerator<T> implementation*
第 3 点在这里代表什么?,因为没有例子,我没有得到那个。这是否意味着,我可以构建自定义枚举器..(对吗?)。我的问题是,当预构建枚举器/枚举器足以进行迭代时(作为初学者,我不应该盲目地确认这一点)为什么我应该照顾自定义的?示例将澄清我的疑问。
感谢您阅读这个冗长的故事和友好的回应。