这是一道面试题,首先finally{}里面的code肯定是会执行的,至于在return前还是后,

看答案说的是在return后执行,我觉得不对,百度了一下,有说return前的,有说return后的,还有return中间执行的。遂做了一个小测试如下:

        static void Main(string[] args)
        {
             //测试
            Test();
            System.Console.WriteLine("结束了");
            System.Console.ReadLine();
        }

        /// <summary>
        /// 测试
        /// </summary>
        /// <returns></returns>
        private static int Test()
        {
            try
            {
                System.Console.WriteLine("好,开始了");
                return ReturnInt();
            }
            catch (Exception exception)
            {
                System.Console.WriteLine("我是异常");
                throw;
            }
            finally
            {
                System.Console.WriteLine("我是finally");
            }
        }

       /// <summary>
       /// 返回数字
       /// </summary>
       /// <returns></returns>
        private static int ReturnInt()
        {
            System.Console.WriteLine("我是return");
            return 1;
        }

  测试结果如下:

  所以我觉得finally{}里面的code是在return之后执行的。

  此测试较粗糙,如有其它方法证明,望告知。

版权声明:本文为bookobe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bookobe/p/8491041.html