微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

是否有任何情况下使用不会处理它应该处理的对象?

例如,

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将有资格进行垃圾回收.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐