我有两个班级:
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; }
}
我的代码在给定时间只有一个Orders类实例,但Orders类可以有OrderLines的多个实例
在代码中需要创建对象并丢弃它们的最简洁方法是什么?
这样就够了吗?
private Orders sampleorder;
if (sampleorder ==null)
{
sampleorder = new Orders();
}
else
{
sampleorder = null;
sampleorder = new Orders();
}
我想要做的是在开始时我想初始化对象然后,当订单完成时,我想清理该对象的所有成员并从初始化值开始重用它。
答案 0 :(得分:1)
“丢弃”可能意味着
释放对象使用的内存:
可以通过调用Collect强制垃圾收集,但是 大部分时间,这应该避免,因为它可能会创建 表现问题。
在同一个变量/属性中使用一个全新的对象:
在这种情况下,只需创建对象的新实例,将其分配给变量/属性,让垃圾收集器完成其工作以清除未使用的引用
答案 1 :(得分:0)
当对象超出范围时,它们会自动处理掉。所以你想要父对象&#34; Orders&#34;保持活跃状态,同时删除它的内部对象。
如果您要拥有父对象的一个实例。考虑使用&#34; KeepAlive&#34;所以你可以保持父对象的活着,只要你喜欢(也就是说它的正常范围)。然后,当使用这个父对象(订单)时,在不需要它们的情况下手动dispose其成员(OrderId,Olines)。
答案 2 :(得分:-1)
这样可以确保您的班级中始终有一个列表。
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; }
}