.net编译器是否知道从下面的代码中产生尾递归? (这意味着它知道没有回溯应作出,因为&&
的,?)是否足够用于尾递归?
public bool DeleteLocation(Guid locationId)
{
return ((_mLocationDal.Save(locationRes) != null) &&
locationRes.ChildrenIds.Aggregate(true,
(succeededSoFar, next) => succeededSoFar &&
DeleteLocation(next)));
}
这可能是一个有趣的问题,但所有的答案到目前为止似乎是一个事实,固定的*编译器*不执行这些操作,而是CLR的JIT编译器。如果这就是你问的问题,你应该考虑编辑这个问题来删除对编译器的错误引用。 – 2011-12-17 11:34:29