C# 我应该为ObjectContext使用using关键字吗?

C# 我应该为ObjectContext使用using关键字吗?,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我在本网站或CodeProject的某个地方读到,好的规则是,如果某个类实现了IDisposable接口,那么您应该使用using关键字,因为使用转换为MSIL的关键字是try/finally block,如下所示: try { //some logic } finally { if (obj != null) { obj.Dispose(); } } using(SampleBEntities db = new SampleBEntit

我在本网站或CodeProject的某个地方读到,好的规则是,如果某个类实现了IDisposable接口,那么您应该使用using关键字,因为使用转换为MSIL的关键字是try/finally block,如下所示:

try
{
   //some logic 
}
finally
{
   if (obj != null)
      {
         obj.Dispose();
      }
}
using(SampleBEntities db = new SampleBEntities()){//some logic here} 
但在观看Entity Framework教程时,我遇到了如下情况:

try
{
   //some logic 
}
finally
{
   if (obj != null)
      {
         obj.Dispose();
      }
}
using(SampleBEntities db = new SampleBEntities()){//some logic here} 

SampleBenties继承自ObjectContext,并且在MSDN lib ObjectContext中未实现IDisposable?

是,它实现了
IDisposable
接口

public class ObjectContext : IDisposable
检查

它有方法
Dispose()
,这些方法来自于实现
IDisposable
接口

public class ObjectContext : IDisposable
如果它没有像您所说的那样实现,那么它甚至不会编译

使用语句

使用定义一个作用域,在该作用域之外将处理一个或多个对象

C#通过.NET Framework公共语言运行库(CLR)自动释放用于存储不再需要的对象的内存。内存的释放是不确定的;每当CLR决定执行垃圾收集时,就会释放内存

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


using语句可以在using语句结束时退出,也可以在抛出异常且控件在语句结束前离开语句块时退出。

如果未实现IDisposable,代码无法编译。请发布您从中了解到的MSDN链接
ObjectContext未实现IDisposable?