【发布时间】:2019-01-31 00:37:03
【问题描述】:
我想问你遍历 Parent 的每个子对象的最有效方法是什么。例如我有一个类是:
public class Asset
{
public string Id { get; set; }
public Asset Child { get; set; }
}
static void Main(string[] args)
{
var x = new Asset() { Id = "1" };
var y = new Asset() { Id = "2" };
var z = new Asset() { Id = "3" };
x.Child = y;
y.Child = z;
z.Child = null;
var listOfChildItems = new List<Asset>();
listOfChildItems = GetAllChildren(x);
}
static List<Asset> GetAllChildren(Asset asset)
{
// TODO:
}
这个类可能包含 Child 包含另一个孩子等等。所以我想要的是递归获取子项的子项的整个列表,直到子项不等于空。
【问题讨论】:
-
你试过什么?什么具体不起作用?
-
如果你想递归地遍历对象树,使用递归方法听起来是个好主意。具体来说,返回
IEnumerable<Asset>的迭代器方法可以解决问题。 -
定义“最有效”。最少的代码行?最快的执行时间?消耗的内存最少?
-
@HimBromBeere 可能是这些参数中的每一个。
-
通常你无法获得全部,如果你保存一些代码行可能会花费你的时间、内存,甚至可读性,反之亦然。