标签:
递归就是: 一条线执行到底 (父级的id在内存中开出的栈是不一样的,具有不同的地址还有不同的值) , 到底了以后
呢 又会返回到 有会执行foreach 去遍历 集合 然后找不到父集的id等于上一级的id的然后就会退出这一层了
去执行上面的一层的foreach 这一层 而且是继续执行下去的 依次类推
直到所有的都给执行完
这里有一个就是:1.函数的执行时从里到外的 2. 然后父级的id在内存中开出的栈是不一样的这样的id是不重复的 (障眼法)
public static void LoadTreeNode(List<Ou_Permission> listPer, List<TreeNode> listNodes, int pid) { //第二级的集合 还有第一级的id foreach (var permission in listPer) { //如果权限父id=参数 if (permission.pParent == pid) { //将 权限转成 树节点 ///////中间 都是一行一行遍历的 TreeNode node = permission.ToNode(); //将节点 加入到 树节点集合 listNodes.Add(node); //递归 为这个新创建的 树节点找 子节点 LoadTreeNode(listPer, node.children, node.id); //node.children 是空的 //第二级的集合 还有第一级的id
上面的LoadTreeeNode()方法被执行完了以后就退出了 退到这里(这里是上一个foreach循环的)以后然后呢就退出了if循环了呗 然后继续执行foreach的函数了呗(这个时候foreach还没有执行完)然后就继续执行了 } } }
标签:
原文地址:http://www.cnblogs.com/canlan/p/5243610.html