有没有办法以象征性的方式循环调用方法?

时间:2011-03-16 11:45:59

标签: c# function recursion

考虑两种循环方法,即深夜,复杂的代码。简而言之,这两个函数看起来像这样:

void foo(int x)
{
  ... foo(x);
}

void bar(int x)
{
  ... foo(x); // oops, I meant "bar"
}

有很多次我希望(我仍然希望)有一些像“自我”这样的符号调用,所以我可以像这样重写它:

void foo(int x)
{
  ... self(x);
}

void bar(int x)
{
  ... self(x); // great! this is what i meant --> bar
}

到目前为止,我能想到的唯一黑客就是编写通用函数“self”,它会在调用堆栈,获取调用者并调用它。但是,它不可能与继承一起使用:

void inherited(int x)
{
   base.self(x);
}

非常感谢您的意见/想法/等: - )

2 个答案:

答案 0 :(得分:0)

编写代码时要多加注意?我不太明白为什么你想要它,但也许我错过了什么。

简而言之,我认为如果没有反思你就无法做到这一点,那时就会有点矫枉过正。

答案 1 :(得分:0)

使用F#;)

(如果函数在自己内部递归,则要求函数标记为rec,并且必须将“and”相互递归函数放在一起 - 使您的错误成为编译器错误。)