2015-08-17 59 views
-3

我有两个类:初始化和重用对象

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

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

+2

不重复使用对象。垃圾收集器非常聪明。 –

+0

什么是丢弃? – dman2306

+0

对不起编辑 – JanetOhara

回答

1

随着“丢弃”你可能意味着

释放由对象使用的内存:

有可能通过调用收集到强制进行垃圾收集,但 大部分时间,这应该避免,因为它可能会造成 性能问题。

msdn

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

在这种情况下,简单地创建该对象的一个​​新实例,将其分配给变量/财产,并让垃圾收集人完成他的工作来清理未使用的参考文件

+0

,这意味着当我完成处理一个订单然后在我使用下一个订单之前进行初始化之前,我只需调用这个 \t \t sampleorder = new Orders ); \t \t我只是害怕,如果我叫sampleorder = NULL,然后用这个下一个订单,然后垃圾收集器,以后将 \t扰乱了目前的订单我与 – JanetOhara

+1

没错工作调用。您的采样器只是您存储对象的引用的地方。 –

-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; } 
} 
0

井对象在超出范围时自动处理。所以你希望父对象“订单”在内部对象被删除时保持活动状态。

如果你打算有父对象的一个​​实例。考虑使用“KeepAlive”,这样你可以保持父对象活着只要你想(也就是它的正常范围)。然后,当使用这个父对象(订单)时,手动dispose其成员(OrderId,Olines),当他们不再需要。