我在VS做一些ASP.NET開發,剛剛發現了一個有趣的小代碼建議(我認爲他們來自coderush,但我可能是錯的)。爲什麼我需要調用ASP.NET控件上的dispose?
每當我創建控件時,它告訴我應該爲他們使用「使用」語句。儘管我對這裏發生了什麼感到困惑。與使用我的代碼看起來是這樣的:
using (HtmlTableRow tableRow = new HtmlTableRow())
{
tableRow.Attributes.Add("class", isOddRow ? "OddRow" : "EvenRow");
listingTable.Rows.Add(tableRow);
addCell(tableRow, row, "issueId");
addCell(tableRow, row, "Title");
addCell(tableRow, row, "Type");
addCell(tableRow, row, "Summary");
}
所以我期待,在using語句的結束,它會調用在tablerow的處理。但是,MSDN庫中的文檔說:
Dispose方法使控制 處於不可用狀態。在調用 這種方法後,您必須釋放對控件的所有 引用,以便它佔用的內存可以是 垃圾回收回收。
所以我希望我現在有一個不可用的對象在我的控制結構中,所以它會打破或不呈現或什麼。然而,一切似乎都很好。
所以我想知道爲什麼所有的控件都是一次性的?這是否僅僅是因爲它們中的一部分會使它們成爲一次性意味着一個調用在頂層處理的調用可以遞歸地傳遞給所有子控件?
我想我會理解,如果不是因爲文檔明確指出處置控件使其無法使用......文檔是否錯誤?
如果我們不使用「使用」塊,我們如何處理孤立的對象(@Toby提到)? – Lijo 2012-11-21 17:38:27