我在閱讀Array.cs
的源代碼時,我發現Array.Copy()
不能保證副本會成功並且事實上甚至可能破壞原始實例(如果我我錯了)。爲了提供安心,ConstrainedCopy()
似乎達到了相同。Array.Copy和Array.ConstrainedCopy - C#
我的問題是:
1>爲什麼任何人使用Array.Copy()
如果它似乎不能保證數據的成功傳輸並繼續可能傷害原始實例?事實上,所有集合類似乎都使用Array.Copy()
來增加它們的實例大小。爲什麼不在這裏使用ConstrainedCopy()
2>那麼一直使用ConstrainedCopy()
的成本是多少呢?我假設將有更多的邏輯添加到ConstrainedCopy()
?
你能解釋一下那些可能導致異常的極端情況嗎?否則,我們不會知道我們的情況是否是我們需要擔心的情況。 – Gabe
Touche,類似於內存不足的問題可能會導致副本失敗,這些情況大多數都不在複製方法的範圍內,並且通常是更大問題的徵兆。 – BentOnCoding
從複製方法拋出的大多數異常都發生在複製開始之前,因此您不需要使用'ConstrainedCopy'來將索引超出範圍或ype不匹配。我能想到的唯一可能的例外是中間拷貝,它們是'InvalidCastException'和'ThreadAbortException'。 – Gabe