当前位置: 代码迷 >> C# >> 求解一个关于Using的有关问题.
  详细解决方案

求解一个关于Using的有关问题.

热度:87   发布时间:2016-05-05 05:17:40.0
求解一个关于Using的问题..


 try
            {
                JavaScriptSerializer jss = new JavaScriptSerializer();
                List<int> ssda = (List<int>)jss.Deserialize(Jsondata, new List<int>().GetType());
                using (Entities yyh = new Entities())
                {

                    foreach (var item in ssda)
                    {
                       Article ya = (from a in Article where a.ID == item select a).FirstOrDefault();
                        if (ya != null)
                        {
                            ya.State = 1;
                            ya.AuditorID = ID;
                            yyh.SaveChanges();
                            return true;
                        }

                    }
                }
                return false;
            }
            catch (Exception)
            {

                return false;
            }

如上代码...

如果发生异常 进入到catch中.. Using中的对象会释放掉么?
------解决思路----------------------
会的
using相等于try catch finally,异常会清理资源。

Using 块有三个部分:获取、使用和释放。
?获取表示创建变量并将其初始化,以便引用系统资源。Using 语句可获取一个或多个资源,您可以在进入块之前恰好获取一个资源,并将其提供给 Using 语句。如果提供 resourceexpression,在将控制权传递给Using 语句之前,您必须获取资源。
?使用表示访问资源并使用资源执行操作。Using 和 End Using 之间的语句代表资源的使用过程。
?释放表示针对 resourcename 中的对象调用 Dispose 方法。这使该对象可以完全终止其非托管资源。End Using 语句释放 Using 块控制的资源。

行为Using 块的工作方式类似于 Try...Finally 构造,在该构造中,Try 块使用资源,而 Finally 块释放资源。因此,不管您如何退出块,Using 块都可确保资源的释放。即使发生未处理的异常(除 StackOverflowException 外),也是如此。


------解决思路----------------------
Using 块的工作方式类似于 Try...Finally 构造,在该构造中,Try 块使用资源,而 Finally 块释放资源。因此,不管您如何退出块,Using 块都可确保资源的释放。即使发生未处理的异常(除 StackOverflowException 外),也是如此。
  相关解决方案