我有问题。
只要Item.Length> 1,递归就可以正常工作。 0
当Item.Length == 0时,它会跳过这一行:GetId(Id, result, Items);
转到具有正确ID的行return Id;
,
然后不是离开函数并返回Id,
它直接进入GetId(Id, result, Items);
行
使用PREVIOUS Id,结果和项目。
问题出在哪里?
private string GetId(string Id, List<something> result, string[] Items)
{
try
{
// some code
if (Items.Length != 0)
GetId(Id, result, Items);
}
catch (Exception e){}
return Id;
}
答案 0 :(得分:3)
是的,它会的。看看你的代码:
if (Items.Length != 0)
GetId(Id, result, Items);
哪一部分说应该退出方法?它没有。它只是调用GetId
并完全忽略结果。
相反,您可能想要返回递归调用返回的值:
if (Items.Length != 0)
return GetId(Id, result, Items);
顺便说一句,我希望你真正的异常处理更好 - 捕捉Exception
通常是一个坏主意,并且默默吞咽它几乎总是一个坏主意......