数组成员引用和垃圾收集
本文关键字:组成员 引用 数组 | 更新日期: 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]的引用,而不是相反。