您的位置:首页 > 职场人生

黑马程序员-try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行

2014-04-29 16:50 453 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐