Mentre osservavo l'implementazione di List.AddRange ho trovato qualcosa di strano che non capisco. Sourcecode, see line 727 (AddRange chiama InsertRange)List <T> .AddRange/InsertRange creazione array temporaneo
T[] itemsToInsert = new T[count];
c.CopyTo(itemsToInsert, 0);
itemsToInsert.CopyTo(_items, index);
Perché fai l'copiarlo la raccolta in un "temp-array" (itemsToInsert) e poi copia l'array temporaneo nella attuale _items-array? C'è qualche motivo alla base di questo, o si tratta solo di alcuni residui dalla copia della sorgente di ArrayList, perché la stessa cosa accade lì.
Suppongo che sia per passare gli articoli in base al valore anziché per riferimento in modo che gli elementi originali inseriti non vengano modificati nel caso in cui gli elementi all'interno dell'elenco vengano modificati –
@Jdsfighter - Non vedo come aiuta a tutti. I contenuti di un array o di una collezione sono valori o riferimenti. Il codice sopra non fa nulla per cambiare la natura di ciò che viene copiato. –
Non penso davvero che sia per nascondere l'array sottostante. Nella mia risposta ho indicato altre probabili spiegazioni. – Fabjan