假设我有一个包含任意数量项目列表的类。在每个列表中,它可以包含同一类列表的列表。它还包含另一个类的另一个列表。我想计算最后一种类型列表的总数。好的,不清楚。我将提供骨架代码:
public class A
{
public List<B> bs{ get; set; }
public int CountCs()
{
}
}
public class B
{
public List<B> Bs{ get; set; }
public List<C> Cs{ get; set; }
}
public class C
{
}
我想编写CountC函数,以便通过整个A实例得到Cs的总数。我已经玩过递归函数等等但现在我的大脑已经崩溃了。有什么想法吗?
答案 0 :(得分:0)
让B类计算它自己的C集合。作为工作的一部分,它可以迭代它自己的B集合中的每个B(如果有的话),并且每个那些将返回一个计数,一个又一个... ...
public class B
{
public List<B> Bs { get; set; }
public List<C> Cs { get; set; }
public int TotalCs()
{
var subtotal = Bs != null ? Bs.Sum(b => b.TotalCs()) : 0;
return subtotal + Cs.Count;
}
}
通过从A:
的实例中调用它来解决它public class A
{
public List<B> bs { get; set; }
public int CountCs()
{
return bs.Sum(b => b.TotalCs());
}
}
最后:
var a = new A();
... // add a bunch of Bs and Cs
var totalCs = a.CountCs();
查看实际操作:https://ideone.com/r1gGnE