具有可选参数的C#递归函数

Kae*_*aeL 4 c# recursion .net-4.0 optional-parameters

我遇到的问题optional parametersrecursive functions

这是一个示例代码:

private static void RecursiveFunction(int x, int optional = 0)
{
    if (x < 5)
        RecursiveFunction(x + 1, optional++);
}
Run Code Online (Sandbox Code Playgroud)

调用函数时:

RecursiveFunction(0);
Run Code Online (Sandbox Code Playgroud)

我得到了以下结果(只是string.Format("{0} - {1}", x, optional)在即时窗口中调用此代码):

"0 - 0"
"1 - 0"
"2 - 0"
"3 - 0"
"4 - 0"
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?谢谢!

gdo*_*ica 7

改变自:

RecursiveFunction(x + 1, optional++);
//                               ^^
Run Code Online (Sandbox Code Playgroud)

至:

RecursiveFunction(x + 1, ++optional);
//                       ^^
Run Code Online (Sandbox Code Playgroud)

第一个做动作然后递增optional.
第二个在增加后执行操作optional.

来自MSDN:

++ var
var ++
Run Code Online (Sandbox Code Playgroud)

第一种形式是前缀增量操作.操作的结果是操作数增加后的值.

第二种形式是后缀增量操作.操作的结果是操作数增加之前的值.