Tôi đã trải qua mã nguồn cho Array.cs
khi tôi đọc rằng Array.Copy()
không đảm bảo rằng một bản sao sẽ thành công và không còn có thể làm hỏng bản gốc (Sửa lỗi nếu tôi sai ở đây). Để tạo sự an tâm, ConstrainedCopy()
dường như cũng đạt được như vậy.Array.Copy and Array.ConstrainedCopy - C#
Câu hỏi của tôi là:
1> Tại sao mọi người sử dụng Array.Copy()
nếu dường như không đảm bảo chuyển dữ liệu thành công và có thể làm tổn thương bản gốc? Infact, tất cả các lớp sưu tập dường như sử dụng Array.Copy()
để tăng kích thước cá thể của chúng. Tại sao không sử dụng ConstrainedCopy()
tại đây
2> Chi phí sử dụng ConstrainedCopy()
là bao nhiêu? Tôi giả định rằng sẽ có nhiều logic hơn được thêm vào ConstrainedCopy()
?
Bạn có thể giải thích những trường hợp cực đoan nào có thể gây ra ngoại lệ không? Nếu không, chúng tôi sẽ không biết liệu kịch bản của chúng tôi có phải là nơi chúng tôi cần phải lo lắng hay không. – Gabe
Touche, điều gì đó giống như hết hạn bộ nhớ có thể gây ra sự thất bại của bản sao, hầu hết các trường hợp này nằm ngoài phạm vi của phương pháp sao chép và thường là dấu hiệu của một vấn đề lớn hơn. – BentOnCoding
Hầu hết các ngoại lệ có thể được ném từ phương thức 'Sao chép' đều xảy ra trước khi bắt đầu sao chép, vì vậy bạn không cần' ConstrainedCopy' để lưu bạn khỏi một chỉ mục nằm ngoài phạm vi hoặc không khớp. Các ngoại lệ duy nhất có thể tôi có thể nghĩ rằng điều đó có thể xảy ra giữa bản sao là 'InvalidCastException' và' ThreadAbortException'. – Gabe