static int getInt1() {
int i = 3;
try {
i = i + 3;
return ++i;
}
finally {
i = i + 3;
Console.WriteLine("在getInt1()");
}
}
static int getInt2()
{
int i = 3;
try
{
i = i + 3;
return i++;
}
finally
{
i = i + 3;
Console.WriteLine("在getInt2()");
}
}
}
运行结果是:
在getInt1()
7
在getInt2()
6
下面是我对这段代码执行过程的分析和猜测,求证:
static int getInt1() {
int i = 3;
try {
i = i + 3;
/*
从返回的结果可以看出:
1、return 返回的是(++i)这个表达式的值
2、当程序执行到return的时候,该函数的最终返回值已经确定,不能再做修改,或者说修改无效
**/
return ++i;
}
finally {
i = i + 3;//这里的运算,虽然改变了i的值,但是对返回结果没有影响。
Console.WriteLine("在getInt1()");
}