我試圖使用遞歸去了一個層次,我得到這個錯誤:C#遞歸 - 「集合被修改;枚舉操作可能不會執行」
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;
}
您只複製參考。他們都指向相同的實際收藏。 –