Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数组成员引用和垃圾收集_C#_Arrays_Garbage - Fatal编程技术网

C# 数组成员引用和垃圾收集

C# 数组成员引用和垃圾收集,c#,arrays,garbage,C#,Arrays,Garbage,如果数组的一个成员一直被引用,那么整个数组将不会被垃圾收集 例如,一种方法: void ParseUtility(string strInput, out string header) { header = ""; string[] parsed = strInput.Split(','); if ((parsed != null) && (parsed.Length > 0)) {

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

例如,一种方法:

    void ParseUtility(string strInput, out string header)
    {
        header = "";

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

从该方法返回时,只要使用“header”,整个字符串数组“parsed”就会被保留?

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

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

这意味着,.net framework始终以最小的引用单位维护对象对于List、HashSet等,框架获取其独立的List或HashSet子成员集合?是;即使您有一个很小的类,它的唯一成员是一个
bool
,该类的实例也会被单独跟踪和GC'ed。