使用块Vs功能块

Gov*_*iya 1 c# memory-management using

我想知道哪个是关于内存管理的更好方法

随着使用

 public void AddUser(User user)
        {
            using (var myentities = new MyEntities())
            {
                myentities .AddTotblUsers(user);
                myentities .SaveChanges();
            }
        }
Run Code Online (Sandbox Code Playgroud)

使用

public void AddUser(User user)
            {
                var myentities = new MyEntities();

                myentities .AddTotblUsers(user);
                myentities .SaveChanges();

            }
Run Code Online (Sandbox Code Playgroud)

哪一个从内存中删除第一个对象?第一,第二或两者相同?

Jal*_*aid 5

第一个using处理对象资源,释放对象修复的资源.

在第二种方法中,您依靠垃圾收集器为您执行此操作,但是垃圾收集器将在您的应用程序执行时在某些非确定性点执行此操作.

这里值得一提的是,using语句被转换为:

{
    Entities myentities = new MyEntities();
    try
    {
        myentities.AddTotblUsers(user);
        myentities.SaveChanges();
    }
    finally
    {
        if (myentities != null)
            ((IDisposable)myEntities).Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

因此它将整个对象包装在try/finally块中,当完成使用它时,它会调用dispose来释放资源,即使在使用过程中抛出异常我们也确定我们的资源可能被处理掉了.