雖然看着List.AddRange的實現,我發現奇怪的東西,我不明白。 Sourcecode, see line 727(調用的AddRange InsertRange)列表<T> .AddRange/InsertRange創建臨時數組
T[] itemsToInsert = new T[count];
c.CopyTo(itemsToInsert, 0);
itemsToInsert.CopyTo(_items, index);
爲什麼利己它集合複製到一個「臨時陣列」(itemsToInsert),然後再拷貝臨時數組實際_items陣列? 是否有任何理由背後,或者這只是複製ArrayList的源的剩餘部分,因爲同樣的事情發生在那裏。
我會假設它是通過值而不是通過引用傳遞項目,以便在列表中的項目本身被修改的情況下,插入的原始項目不會被修改 –
@Jdsfighter - 我看不到如何有所幫助。數組或集合的內容是值或引用。上面的代碼不會改變正在複製的內容。 –
我真的不認爲它是隱藏底層數組。在我的回答中,我指出了其他可能的解釋。 – Fabjan