Juste pour vous assurer que je comprends des copies peu profondes correctement et que des types de référence, je ne suis pas la construction d'une énorme fuite de mémoire ici:Question sur tableau copie superficielle en C#
// 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;
Ce serait tout d'abord copier les refs aux chaînes dans rtbLog.Lines en lignes. Ensuite, il copiera les 100 premières références de lignes dans un nouveau tableau de chaînes. Cela signifie que le tableau référencé à l'origine par rtbLog.Lines, le tableau initialement référencé par des lignes (avant le redimensionnement), et enfin toutes les chaînes non contenues dans les lignes (après le redimensionnement), tous sont récupérés. (J'espère que cela a du sens)
Correct?
Un "oui" aurait suffi, mais merci d'avoir pris le temps d'expliquer différemment! :) Tant que les cordes que je "popping" hors de la fin obtiennent GC'ed (à condition qu'ils ne sont pas référencés ailleurs bien sûr), je suis heureux. –