gpt4 book ai didi

c# - 如何在消费时将项目添加到集合中?

转载 作者:行者123 更新时间:2023-11-30 19:04:23 25 4
gpt4 key购买 nike

下面的示例抛出 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
}

如何以更好的方式重写它?我在猜测递归解决方案?

最佳答案

基本上,你不能。你真正想要的是一个队列:

var urls = new Queue<string>();
urls.Enqueue("http://www.google.com");

while(urls.Count != 0)
{
String url = url.Dequeue();
// Get all links from the url
List<string> newUrls = GetLinks(url);
foreach (string newUrl in newUrls)
{
queue.Enqueue(newUrl);
}
}

由于没有AddRange,所以有点难看Queue<T> 中的方法但我认为这基本上就是您想要的。

关于c# - 如何在消费时将项目添加到集合中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com