我应该在ObjectContext中使用using关键字吗?

3
我在这个网站或CodeProject上读到过一个好的规则,如果某个类已实现IDisposable接口,则你才应该使用using关键字,因为using关键字被翻译成MSIL后,像是try/finally块,如下所示:
try
{
   //some logic 
}
finally
{
   if (obj != null)
      {
         obj.Dispose();
      }
}

然而,在观看Entity Framework教程时,我遇到了以下内容:

using(SampleBEntities db = new SampleBEntities()){//some logic here} 

SampleBEntities继承自ObjectContext,在MSDN库中,ObjectContext没有实现IDisposable接口?


如果它没有实现IDisposable,代码将无法编译。 - Tim S.
请分享您学习“ObjectContext不实现IDisposable接口”的MSDN链接。 - Nikhil Agrawal
1个回答

6
是的,它实现了IDisposable接口。
public class ObjectContext : IDisposable

请查看 MSDN

它有一个来自实现 IDisposable 接口的方法 Dispose()

如果按照你所说的没有实现,不要谈运行,甚至都无法编译。

using 语句

使用 using 可以定义一个作用域,在该作用域外,一个或多个对象将被释放。

C# 通过 .NET Framework 公共语言运行时(CLR)自动释放不再需要的对象所占用的内存。内存的释放是非确定性的,即 CLR 决定执行垃圾回收时才会释放内存。

using 语句允许我们指定何时释放使用资源的对象。提供给 using 语句的对象必须实现 IDisposable 接口。该接口提供了 Dispose 方法,该方法应该释放对象的资源。

在达到 using 语句的末尾或在语句块结束之前抛出异常并离开语句块时,using 语句可能会退出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接