C# 集合已修改。枚举操作不能执行 Dictionary urlsLimited=newdictionary(); 结构lim { 公共int min; 公共整数最大值; } foreach(urlsLimited中的KeyValuePair对) { if(urlsLimited[pair.Key].min
在foreach I receive集合的第一个循环被修改之后。枚举操作不能执行。如何摆脱它?既然您没有更改C# 集合已修改。枚举操作不能执行 Dictionary urlsLimited=newdictionary(); 结构lim { 公共int min; 公共整数最大值; } foreach(urlsLimited中的KeyValuePair对) { if(urlsLimited[pair.Key].min,c#,C#,在foreach I receive集合的第一个循环被修改之后。枚举操作不能执行。如何摆脱它?既然您没有更改键,也许您可以尝试以下方法: Dictionary<string, lim> urlsLimited = new Dictionary<string, lim>(); struct lim { public int min; public int max; } foreach (KeyValuePair<string, lim> pa
键,也许您可以尝试以下方法:
Dictionary<string, lim> urlsLimited = new Dictionary<string, lim>();
struct lim
{
public int min;
public int max;
}
foreach (KeyValuePair<string, lim> pair in urlsLimited)
{
if (urlsLimited[pair.Key].min < urlsLimited[pair.Key].max)
{
string like = od.LikeDiscussions(pair.Key);
if (like == "Like")
{
lock (locker)
{
good_like++;
lim val = pair.Value;
val.min++;
urlsLimited[pair.Key] = val;
log_good_like(good_like);
}
}
}
}
foreach(urlsLimited.Keys中的var键)
{
if(urlsLimited[key].min这将解决您的问题:
foreach(urlsLimited.ToArray()中的KeyValuePair对)
您必须停止修改foreach循环中的集合。您正在修改字典条目urlsLimited[pair.Key]=val代码>在枚举期间。这是不允许的。在枚举字典时不要修改它
foreach (var key in urlsLimited.Keys)
{
if (urlsLimited[key].min < urlsLimited[key].max)
{
string like = od.LikeDiscussions(key);
if (like == "Like")
{
lock (locker)
{
good_like++;
lim val = pair.Value;
val.min++;
urlsLimited[key] = val;
log_good_like(good_like);
}
}
}
}