加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 是否存在使用不会丢弃物体的情况?

发布时间:2020-12-15 20:05:57 所属栏目:百科 来源:网络整理
导读:是否有任何情况下使用不会处理它应该处理的对象? 例如, using(dbContext db = new dbContext()){ ... } 有没有办法在最后一个} db仍然存在? 如果出现这种情况怎么办: object o = new object();using(dbContext db = new dbContext()){ o = db.objects.fin
是否有任何情况下使用不会处理它应该处理的对象?

例如,

using(dbContext db = new dbContext()){ ... }

有没有办法在最后一个} db仍然存在?

如果出现这种情况怎么办:

object o =  new object();
using(dbContext db = new dbContext()){
 o = db.objects.find(1);
}

o可以保持db存活吗?

解决方法

我认为你混淆了两个概念:处理和垃圾收集.

处置对象会释放此对象使用的资源,但这并不意味着该对象已被垃圾回收.垃圾收集只会在不再引用您的对象的情况下发生.

因此在您的示例中,db.Dispose将在using块的末尾调用(将关闭连接),但DbContext仍将由o引用.由于o是局部变量,因此当方法返回时,DbContext将有资格进行垃圾回收.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读