【发布时间】:2010-10-21 23:06:44
【问题描述】:
只是为了确保我正确理解了引用类型的浅表副本,并且我没有在这里构造巨大的内存泄漏:
// Adds text to the beginning of the log RTB
// Also keeps the log RTB trimmed to 100 lines
var lines = new string[rtbLog.Lines.Length + 1];
lines[0] = "text";
Array.Copy(rtbLog.Lines, 0, lines, 1, rtbLog.Lines.Length);
if (lines.Length > 100)
{
Array.Resize(ref lines, 100);
}
rtbLog.Lines = lines;
这将首先将 refs 复制到 rtbLog.Lines 中的字符串到行中。然后它将行中的前 100 个引用复制到一个新的字符串数组中。
表示 rtbLog.Lines 最初引用的数组,最初由行(调整大小之前)引用的数组,最后是任何不包含在行中的字符串(调整大小之后),都会被垃圾收集。 (我希望这是有道理的)
正确吗?
【问题讨论】:
标签: c# arrays string shallow-copy