none
关于using语句 RRS feed

答案

  • 不在using()括号内初始化一个类,而在using语句体内初始化,到using末尾时会强制回收吗?

    会强制回收。因为using等价于try……finally……,假设你这个代码:

    using (SqlCommand cmd = new SqlCommand())
                {
                    Program p = new Program();
                }

    等价于:

     SqlCommand cmd = null;
                try
                {
                    cmd = new SqlCommand();
                    //你的语句
                    Program p = new Program();
                }
                finally
                {
                    cmd.Dispose();
                }

    正如你所看到的一样——因为using块中定义的变量只限于在using中使用(好比try块中定义的变量只能在try中使用)……那么一旦出了using或者try块,变量就失效了。(p无法继续使用),然后会由垃圾回收器隔一段时间回收。


    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年8月6日 2:30
    版主

全部回复