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

时间:2015-08-17 12:51:18

标签: c#

我有两个班级:

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

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

3 个答案:

答案 0 :(得分:1)

“丢弃”可能意味着

释放对象使用的内存:

  

可以通过调用Collect强制垃圾收集,但是   大部分时间,这应该避免,因为它可能会创建   表现问题。

msdn

在同一个变量/属性中使用一个全新的对象:

在这种情况下,只需创建对象的新实例,将其分配给变量/属性,让垃圾收集器完成其工作以清除未使用的引用

答案 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; }
}