我在这个网站或 CodeProject 的某个地方读到,好的规则是,如果某个类已经实现了 IDisposable 接口,那么您应该使用 using 关键字,因为使用翻译成 MSIL 的关键字会尝试/最终阻止如下内容:
try
{
//some logic
}
finally
{
if (obj != null)
{
obj.Dispose();
}
}
但是在观看实体框架教程时,我遇到了这样的事情:
using(SampleBEntities db = new SampleBEntities()){//some logic here}
并且SampleBEntities继承自ObjectContext并且在MSDN lib中ObjectContext没有实现IDisposable?
是的,它确实实现了IDisposable
界面。
public class ObjectContext : IDisposable
Check MSDN http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx
它有方法Dispose()
这来自于实施IDisposable
界面。
如果它没有按照您所说的那样实现,则无需运行,它甚至无法编译。
使用语句
using 定义了一个范围,在该范围之外将处理一个或多个对象。
C# 通过 .NET Framework 公共语言运行时 (CLR) 自动释放用于存储不再需要的对象的内存。内存的释放是不确定的;每当 CLR 决定执行垃圾回收时,就会释放内存。
using 语句允许我们指定使用资源的对象何时应该释放它们。提供给 using 语句的对象必须实现 IDisposable 接口。该接口提供了 Dispose 方法,该方法应该释放对象的资源。
当到达 using 语句末尾或者抛出异常并且控制在语句结束之前离开语句块时,可以退出 using 语句。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)