我看了很多引用,并且已经看到C#通过lambda支持嵌套函数,但我完全不熟悉C#(以及.NET)。我想写一个泛洪填充实现,嵌套子项可以访问父函数的参数。
理想情况下,这应该是什么样的:
private void StartFloodFill(color,otherstuff,pixel)
{
function Recursion(pixel,color)
{
do(otherstuff);
//etc...
Recursion(pixel,color);
}
}
Recursion(pixel,color);
电话是我困惑的地方。我无法从函数内部访问函数的引用。
我知道应该有一个解决方法,但我不知道那是什么。如何实现上面在C#中演示的递归函数?
答案 0 :(得分:4)
根据建议,您可以使用递归委托。通常,你会声明一个像这样的代表:
Func<int,int, int> = (a, b) => a+b;
其中Func<int, int, int>
是占用2个int的委托的类型,并返回另一个int。
但是既然你想让它自己调用,你必须在分配委托之前声明变量。
Func<Pixel, Color, SomeType> func = null;
func = (pixel, color) => {
//do stuff...
if(endCondition)
return someTypeValue;
else
return func(pixel, color);
};