如何定义一个可以返回指向自身的函数?

时间:2010-07-01 00:35:14

标签: recursion function-pointers static-typing

我想写这样的代码:

/*something*/ Fn() { ... }

int main()
{
  /*something*/ fn = Fn;
  while(fn) fn = fn();
  return 0;
}

有可能这样做是一种完全类型安全的方式吗?假设C,C ++,D,C#,Java或任何其他静态类型语言。

1 个答案:

答案 0 :(得分:1)

这是一个C#示例

delegate MyFunctionDelegate MyFunctionDelegate();

class Program
{
    static void Main(string[] args)
    {
        MyFunctionDelegate fn = FN1;
        while (fn!=null)
            fn = fn();
    }

    static MyFunctionDelegate FN1()
    {
        Console.WriteLine("FN1 called");
        MyFunctionDelegate returnDelegate = FN2;
        return returnDelegate;
    }

    static MyFunctionDelegate FN2()
    {
        Console.WriteLine("FN2 called");
        return null;
    }
}