2015-08-17 89 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),當他們不再需要。