就像在Visual Studio中的默認C#的模板,我已經定義了一個Windows Form
作爲一個靜態對象,如下圖所示:我是否需要處理靜態對象內定義的非靜態對象?
public static FormMain formMain;
static void Main()
{
formMain = new FormMain();
Application.Run(formMain);
formMain.Dispose();
}
正如你所看到的,我分配(使用new
)的內存空間這個靜態表單在調用它之前,在表單關閉後釋放內存(使用Dispose
)。
然而,這種靜態的形式中,我定義了幾個非靜態物體(比如標籤)的,如下圖所示:
public FormMain()
{
// some code here
Label myLabel1 = new Label();
Label myLabel2 = new Label();
Label myLabel3 = new Label();
// some code here
}
現在,我有兩個問題:
我是否還必須
Dispose
這些非靜態對象,或者它們是否在調用formMain.Dispose();
行後立即釋放(釋放內存)?如果我需要處理這些非靜態對象,在哪個階段的程序我應該更喜歡使用
Dispose
(比如,在FormClosed
或FormClosing
事件)?
注意:我儘量不使用表單設計工具在Visual Studio,但更喜歡通過代碼行表格線。
Application.Run已經在示例中處理了這個表單:「Form類的Dispose方法將在返回[Application.Run]方法之前被調用。」 – user2864740
我不是在詢問窗體,而是在窗體中定義的非靜態對象('myLabel1','myLabel2'等)。 – ssd
'FormMain'應該處理它創建的成員變量。 「FormMain」是否存儲在一個靜態變量中無關緊要。 –