Просто чтобы убедиться, что я правильно понимаю мелкие копии ссылочных типов и что я не создаю здесь огромную утечку памяти:
// 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, массив, на который изначально ссылаются строки (до изменения размера), и, наконец, любые строки, не содержащиеся в строках (после изменения размера), все они собирают мусор. (Надеюсь, это имеет смысл)
Правильно?