Just reading through the RSS sample I mentioned in my previous post on the Windows RSS Platform and noticed that they are using one of the new C# features in .NET v2, Iterators. Anyhow the code snippet I’m referring to is:
public static IEnumerable<IFeed> CommonFeedList(IFeedFolder folder)
{
Queue<IFeedFolder> queue = new Queue<IFeedFolder>();
queue.Enqueue(folder);
while (queue.Count > 0)
{
IFeedFolder currentFolder = queue.Dequeue();
foreach (IFeedFolder subfolder in (IFeedsEnum)currentFolder.Subfolders)
queue.Enqueue(subfolder);
foreach (IFeed feed in (IFeedsEnum)currentFolder.Feeds)
{
System.Windows.Forms.Application.DoEvents();
yield return feed;
}
}
}
While not the most elegant piece of code (especially the explicit call to “DoEvents”) it got me thinking about how I would do this in VB. The long answer is that you need to code the full iterator yourself. Please, please, please VB team can we have iterators?