码迷,mamicode.com
首页 > 其他好文 > 详细

我所不了解的try{ return }finally{}中的return!

时间:2015-05-06 01:23:17      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

背景

  • 四月初一篇文章《你真的了解try{ return }finally{}中的return?》引起了大家的关注,本文介绍了try、finally同时操作一个数据所经历的过程。

  • 但是因为作者用值类型作为举例类型,我心里就难免怀疑它对引用类型的操作是怎么样的,自己测试代码,还真的出现了问题,我自己无法解决。希望大神给我点提示。


  • 代码

    class Program
        {
            static void Main(string[] args)
            {
                Program t = new Program();
                int y = t.aaa();
                List<string> list = t.GetList();

                Console.ReadLine();
            }

            public int aaa()
            {
                int x = 1;

                try
                {
                    return ++x;
                }
                catch (Exception e)
                {

                }
                finally
                {
                    ++x;
                }
                return x;
            }

            public List<string> GetList()
            {
                var list = new List<string>() { "aaa" };
                try
                {
                    list.Add("bbb");
                    return list;
                }
                catch (Exception)
                {

                }
                finally
                {
                    list.Add("ccc");
                }
                return list;
            }
        }


    疑问

    如果按照原作者的逻辑,GetList()这个方法返回的应该是包含“aaa”,“bbb”两个字符串的list,但是结果却返回了“aaa”“bbb”“ccc”三个数据的list,而且最变态的是,如果我将这个方法改为返回list.Count,返回的结果是2,希望大神能帮我解释一下原因?


  •  

  • 我所不了解的try{ return }finally{}中的return!

    标签:

    原文地址:http://www.cnblogs.com/zbqldyj/p/4480775.html

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!