如何以递归方向向上遍历我的树,并且当添加到List<User>
时,当它到达根时终止的ID?我尝试过与ref和out的差异组合,没有运气。
我尝试修改dotnetpearls example:
static int Recursive(int value, ref int count)
{
count++;
if (value >= 10)
{
// throw new Exception("End");
return value;
}
return Recursive(value + 1, ref count);
}
static void Main()
{
//
// Call recursive method with two parameters.
//
int count = 0;
int total = Recursive(5, ref count);
//
// Write the result from the method calls and also the call count.
//
Console.WriteLine(total);
Console.WriteLine(count);
}
对于这样的事情:
static void Main(string[] args)
{
List<int> userIds = new List<int>();
Recursive(5, ref userIds);
Console.WriteLine(userIds);
Console.ReadKey();
}
static int Recursive(int nodeId, ref List<int> userIds)
{
userIds.AddRange(GetPersonIdsOnThisNode(nodeId)); // Error: Argument type 'int' is not assignable to parameter type 'System.Collections.Generic.IEnumerable<int>'
if (nodeId >= 10)
{
return nodeId; // I don't care about the return value. I only care about populating my list of userId's.
}
return Recursive(nodeId + 1, ref userIds);
}
static int GetUserIdsOnThisNode(int nodeId)
{
return 3;
}
答案 0 :(得分:2)
AddRange
是一次添加多个对象,并且您要添加一个int
元素。
它期待list
,您提供的是int
。
改为使用userIds.Add
。