递归获取Page类所有子对象列表的实现方案求助
解决方案
迭代实现(推荐,避免深层嵌套导致栈溢出)
这种方式通过循环遍历嵌套结构,适配任意深度的层级:
public List<Page> GetAllPages(Page startPage) { var pageList = new List<Page>(); var currentPage = startPage; while (currentPage != null) { pageList.Add(currentPage); currentPage = currentPage.StaticPage; } return pageList; }
递归实现(代码简洁,适合层级较浅的场景)
如果嵌套层级不会太深,递归写法更直观:
public List<Page> GetAllPages(Page startPage) { var pageList = new List<Page>(); if (startPage == null) return pageList; pageList.Add(startPage); pageList.AddRange(GetAllPages(startPage.StaticPage)); return pageList; }
使用说明
- 调用时传入起始的
Page对象即可,函数会自动收集从起始对象开始的所有嵌套StaticPage,直到遇到null为止。 - 两种方法都会包含起始的
Page对象,以及后续每一层的StaticPage对象。
内容的提问来源于stack exchange,提问作者User9995555
相关产品推荐
相关产品推荐

