你的位置:首页 > ASP.net教程

[ASP.net教程]我所不了解的try{ return }finally{}中的return!

背景

  • 四月初一篇文章《你真的了解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,希望大神能帮我解释一下原因?


  •