我有一个递归方法来处理从流中检索的项目。但是,我希望该方法仅在没有其他项要处理时返回stream.NextPosition。但是,由于这是一个递归方法,编译器会抱怨并非所有代码路径都返回一个值。有道理,因为递归调用没有返回任何东西。我如何处理这个问题,我只对最后一次调用的返回值感兴趣。
public void Process()
{
int position = ProcessStream(0)
}
//recursive method
public string ProcessStream(int streamPosition)
{
var stream = GetStream(streamPosition);
if (stream.Items.count == 0)
return stream.NextPosition;
foreach(var item in stream.Items)
{
ProcessItem(item);
}
ProcessStream(stream.NextPosition)
}
答案 0 :(得分:5)
您必须在功能结束时return ProcessStream(stream.NextPosition)
。
public string ProcessStream(int streamPosition)
{
var stream = GetStream(streamPosition);
if (stream.Items.count == 0)
return stream.NextPosition;
foreach(var item in stream.Items) {
ProcessItem(item);
}
return ProcessStream(stream.NextPosition)
}