您的位置:首页 > 编程语言 > C#

有return的情况下try catch finally的执行顺序

2014-08-22 08:08 225 查看
背景:

         昨天一个朋友出去面试,遇到这么一道题:“C#  catch里有return,finally里还执行吗?”

个人实践小结:

        1、不管有木有出现异常,finally块中代码都会执行

        2、当try和catch中有return时,finally仍然会执行。    

具体案例如下(此处以没有返回值的函数进行验证):

        


       3、如果是值传递,finally中改变的值对try或catch块中return返回的值无影响如果是引用类型参数(地址传递或对象),finally中的值改变对return会产生影响

具体案例:

      引用案例--数组类型:



        值案例--int类型:



        思考:string类型属于引用类型,那么它的返回值会受到finflly的影响吗?还是来看案例吧-----其实string与int类型的表现一样,不会受到finally的影响:



        思考:那么在finally中加上return,会产生什么影响呢?有图有真相:



        可见,finally中是不允许出现return的,否则连编译都过不去。

        

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息