使用IDisposable的正确方法是什么

本文关键字:方法 是什么 IDisposable 使用 | 更新日期: 2023-09-27 18:22:34

在下面的例子中。。。由于该类有一个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...

使用IDisposable的正确方法是什么

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

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

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