2015-11-05 14 views
2

如果一個數組的成員被引用,整個數組不會被垃圾回收?數組成員引用和垃圾回收

例如,一種方法:

正在使用
void ParseUtility(string strInput, out string header) 
    { 
     header = ""; 

     string[] parsed = strInput.Split(','); 
     if ((parsed != null) && (parsed.Length > 0)) 
     { 
      header = parsed[0]; 
     } 
     return; 
    } 

從該方法返回時,「解析」整個字符串數組只要將保持爲「標題」?

回答

3

情況並非如此。 string是一個類,因此,任何string實例都有一個獨立的存在 - 所述陣列的每個元件簡單地string,和header = parsed[0]保留了參考string,而不是陣列。數組是否可能是GC'ed僅取決於數組本身是否可訪問。

+0

這意味着.net框架總是通過最小的參考單元來維護對象嗎? - 對於List,HashSet等,框架獲取List或HashSet的子成員的獨立集合? – Chengting

+0

是的;即使你有一個小型的類,其唯一的成員是一個單一的「布爾」,該類的實例將被單獨跟蹤和GC化。 –

2

不應該。 parsed有一個對parsed [0]的引用,而不是相反的方式。