【发布时间】:2012-08-24 08:44:46
【问题描述】:
我正在尝试使用递归来提升层次结构,但出现此错误:
Collection was modified; enumeration operation may not execute.
我这里的假设是,每次进入函数时,它使用的是相同的 parentRolesCopy 而不是不同的,所以当它第二次进入时,它会在原始函数调用中将 parentRolesCopy 更改为不同。
我怎样才能解决这个问题?
private IEnumerable<string> GetAllParentRoles(string role)
{
// GET EACH PARENT ROLE
var parentroles = //code that gets any parents of the role passed in
//RECURSIVELY CALL THIS FUNCTION TO KEEP GETTING PARENTS OF PARENT ROLES UNTIL NONE LEFT
var parentRolesCopy = parentroles;
foreach (var parentrole in parentRolesCopy)
{
parentroles.AddRange(GetAllParentRoles(parentrole));
}
return parentroles;
}
【问题讨论】:
-
您只是在复制参考。它们都指向同一个实际集合。
标签: c# recursion ienumerable