参照型の浅いコピーを正しく理解していること、およびここで巨大なメモリリークを構築していないことを確認するためだけに:
// 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;
これは、最初に rtbLog.Lines の文字列への参照を行にコピーします。次に、行から最初の 100 個の参照を新しい文字列配列にコピーします。
つまり、rtbLog.Lines が最初に参照していた配列、(サイズ変更前) 行によって最初に参照された配列、最後に (サイズ変更後) 行に含まれていないすべての文字列がすべてガベージ コレクションされます。(それが理にかなっていることを願っています)
正しい?