2012-03-13 157 views
0

我有一個標籤陣列指向一個標籤,如,刪除對象經由指針

label_array[i] = a_label; 

陣列具有全球而標籤具有功能範圍。是否有可能通過數組刪除標籤?

+0

在這種情況下,「刪除」是什麼意思。從表單中刪除? (我通過「label」假設你的意思是一個視覺標籤。) – 2012-03-13 20:42:15

+0

你確定你標記了這個權利嗎? C#和指針很少混合。 – 2012-03-13 20:42:15

+0

@ LasseV.Karlsen:與「刪除」我的意思是完全刪除。 – Shibli 2012-03-13 20:43:48

回答

1

通常,您可以通過將對象的引用設置爲null來處置對象,垃圾收集器將負責爲您處理這些對象。 但是,並不是所有的對象都可以通過將它們的引用設置爲null來處理。事實上,實現IDisposable所有對象都應該通過調用其Dispose方法,它需要以Dispose的顯式調用來釋放自己的資源GDI對象的情況下,可以配置(請參閱此鏈接details

這是正說如果a_label是一個WinForms Label那麼你應該做以下處置它:

// REMOVE THE LABEL FROM THE PARENT CONTAINER FIRST 
// AND THEN DO THE FOLLOWING 
label_array[i].Dispose(); 
label_array[i] = null; 

編輯 只是爲了強調什麼@Groo在下面的評論中提到,請確保您刪除Label˚F在處理它之前從父容器中刪除,謝謝@Groo!

+1

我不建議在標籤從其父控件的'Controls'集合中移除之前進行此操作。 – Groo 2012-03-13 21:12:09

+0

@格羅感謝您提及。我更新了我的回答 – GETah 2012-03-13 21:16:08

+1

在.NET中釋放引用時,請不要說「處置」,處置對象和釋放引用(最終使其符合收集條件)並非完全相同。 – 2012-03-13 22:57:34