在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();
}

我想做的是在开始时我想初始化对象,然后,当订单完成时,我想清除该对象的所有成员,并从初始化值开始重用它

在c#中初始化和重用对象

这里的"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; }
}