----------------------
ASP.Net+Unity开发、
.Net培训、期待与您交流! ----------------------
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com
static void Main(string[] args)
{
Console.WriteLine(GetIt());
Console.ReadKey();
}
static int GetIt()
{
int i = 8;
try
{
i++;
Console.WriteLine("a");
return i;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
}
finally
{
Console.WriteLine("b");
i++;
}
}
上面程序的执行结果是ab9
try{}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?
会执行,在return后执行。
static void Main(string[] args)
{
//Console.WriteLine(GetIt());
Console.WriteLine(GetPerson().Age);
Console.ReadKey();
}
static Person GetPerson()
{
Person p = new Person();
p.Age = 8;
try
{
p.Age++;
Console.WriteLine("a");
return p;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧。搞完就走)
}
finally
{
Console.WriteLine("b");
p.Age++;
}
}
补充回答(也助记):读取数据库中数据的条数的程序
public int QueryCount()
{
…..
try
{
return cmd.ExecuteScalar();
}
finally
{
cmd.Dispose();
}
}
先执行cmd.ExecuteScalar(),把返回值暂时存起来,然后再去执行finally(钱放在这,我去劫个色),然后把返回值返回。return都是最后执行,但是return后的表达式的计算则是在finally之前。
如果C#设计的是先执行cmd.Dispose()再执行return就会出现return执行失败了,因为cmd已经Dispose了。
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com