在c#中初始化和重用对象
本文关键字:对象 初始化 | 更新日期: 2023-09-27 18:08:31
我有两个类:
public class Orders
{
public int OrderId { get; set; }
private List<OrderLine> OLines;
}
public class OrderLine
{
public int ProductId { get; set; }
public int Qty { get; set; }
}
我的代码将,在给定的时间,只有一个订单类的实例,但订单类可以有多个OrderLines的实例
创建对象并在代码中需要时丢弃它们的最干净的方法是什么?
这就够了吗?
private Orders sampleorder;
if (sampleorder ==null)
{
sampleorder = new Orders();
}
else
{
sampleorder = null;
sampleorder = new Orders();
}
我想做的是在开始时我想初始化对象,然后,当订单完成时,我想清除该对象的所有成员,并从初始化值开始重用它
这里的"discard"可能是指
释放对象使用的内存:
可以通过调用Collect来强制垃圾收集,但是大多数情况下,这应该避免,因为它可能会产生性能问题。
<一口> msdn 一口>
在同一个变量/属性中使用一个全新的对象:
在本例中,只需创建对象的新实例,将其分配给变量/属性,并让垃圾收集器清理未使用的引用
Well对象在超出作用域时被自动处理。因此,你希望父对象"Orders"在其内部对象被删除时保持活动状态。
如果你要有父对象的一个实例。考虑使用"KeepAlive",这样你就可以让父对象保持存活,只要你愿意(也就是在它的正常作用域之外)。然后,在使用父对象(orders)时,当不再需要它的成员(OrderId, Olines)时,手动处置它们。
这将确保你的类中一直有一个列表。
public class Orders
{
public int OrderId { get; set; }
private List<OrderLine> oLines;
public List<OrderLine> OLines
{
get
{
if (oLines == null)
oLines = new List<OrderLine>();
return oLines;
}
}
}
public class OrderLine
{
public int ProductId { get; set; }
public int Qty { get; set; }
}