try{}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?
答案是会的。
static void Main(string[] args)
{
//Console.WriteLine(GetIt());
Console.WriteLine(GetPerson().Age);
Console.ReadKey();
}
static int GetIt()
{
inti = 8;
try
{
i++;
Console.WriteLine("a");
returni;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧。搞完就走)
}
finally
{
Console.WriteLine("b");
i++;
}
}
static Person GetPerson()
{
Personp = new Person();
p.Age = 8;
try
{
p.Age++;
Console.WriteLine("a");
returnp;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧。搞完就走)
}
finally
{
Console.WriteLine("b");
p.Age++;
}
}
打个不恰当的比方:
把返回值暂时存起来,然后再去执行finally(钱放在这,我去劫个色),然后把返回值返回。return都是最后执行,但是return后的表达式的计算则是在finally之前。