在下面的示例中...由于类具有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...
答案 0 :(得分:2)
dispose模式仅用于访问非托管资源的对象。这是因为垃圾回收器在回收未使用的托管对象方面非常有效。
实现Dispose方法没有性能优势 仅使用托管资源(例如数组)的类型,因为它们 由垃圾收集器自动回收。使用Dispose 方法主要在使用本机资源的托管对象上 暴露给.NET Framework的COM对象。托管对象 使用本机资源(如FileStream类)实现的 IDisposable接口。