数组成员引用和垃圾收集

本文关键字:组成员 引用 数组 | 更新日期: 2023-09-27 18:20:34

如果一个数组的一个成员一直被引用,那么整个数组就不会被垃圾回收?

例如,一种方法:

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

从该方法返回时,只要使用了"header",整个字符串数组"已解析"就会被保留?

数组成员引用和垃圾收集

事实并非如此。string是一个类,因此任何string实例都有一个独立的存在-数组的每个元素都简单地引用string,而header = parsed[0]保留对string的引用,而不是对数组的引用。数组是否可以GC’ed完全取决于数组本身是否可访问。

不应该。已解析的具有对已解析[0]的引用,而不是相反。