使用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...
在上实现Dispose方法没有任何性能优势只使用托管资源(如数组)的类型,因为它们由垃圾收集器自动回收。使用Dispose方法主要针对使用本机资源的托管对象和向.NET Framework公开的COM对象。托管对象使用本机资源(如FileStream类)的IDisposable接口。
http://msdn.microsoft.com/en-us/library/fs2xkftw.aspx