-1

在下面的示例中...由于该类具有 IDisposable 接口,并且该类本身只是一个管理内存对象(不是非托管内存),因此在下面的脚本中(参见案例#1和案例#2) -使用列表对象完成处理后,正确的处理方法是什么?

 public class VehicleA : IDisposable
 {
     public void Dispose() { }

     public string Year {get;set;}
     public string Make {get;set;}
     public string Model {get;set;}
 }
 public class repositoryVehicle()
 {
     public List<VehicleA> VehicleLookup()
     {
         List<VehicleA> returnVehicles = new List<Vehicle>();

         returnVehicles.Add(new VehicleA { Year="2007", Make="Ford", Model="Mustang" });
         returnVehicles.Add(new VehicleA { Year="2004", Make="Chevy", Model="Blazer" });

         return returnVehicles;
     }
 }

 //Case #1...
 foreach(var v in repositoryVehicle.VehicleLookup())
 {
     //v.Year...
 }

 //Case #2...
 List<VehicleA> vehicles = new List<VehicleA>();
 vehicles = repositoryVehicle.VehicleLookup();
 //vehicles[x].Year...
4

1 回答 1

2

dispose 模式仅用于访问非托管资源的对象。这是因为垃圾收集器在回收未使用的托管对象方面非常有效。

在只使用托管资源(例如数组)的类型上实现 Dispose 方法没有性能优势,因为它们会被垃圾收集器自动回收。主要对使用本机资源的托管对象和向 .NET Framework 公开的 COM 对象使用 Dispose 方法。使用本机资源(如 FileStream 类)的托管对象实现 IDisposable 接口。

http://msdn.microsoft.com/en-us/library/fs2xkftw.aspx

于 2013-07-16T21:41:50.730 回答