【发布时间】:2010-09-22 04:18:22
【问题描述】:
下面的示例抛出 InvalidOperationException,“集合已修改;枚举操作可能无法执行。”执行代码时。
var urls = new List<string>();
urls.Add("http://www.google.com");
foreach (string url in urls)
{
// Get all links from the url
List<string> newUrls = GetLinks(url);
urls.AddRange(newUrls); // <-- This is really the problematic row, adding values to the collection I'm looping
}
如何以更好的方式重写它?我猜是递归解决方案?
【问题讨论】:
-
你是想爬取整个互联网还是只获取原始列表中页面上的链接?
-
呵呵,这只是一个例子,当然:)
-
爬网很有趣;为了好玩,我开始了一次爬取 www.altavista.com 的过程,当我的硬盘驱动器已满时,我发现它主要是 pr0n :)