Array.Copy và Buffer.BlockCopy đều làm điều tương tự, nhưng BlockCopy
nhằm mục đích sao chép mảng nguyên thủy cấp byte nhanh, trong khi đó Copy
là việc triển khai mục đích chung. Câu hỏi của tôi là - bạn nên sử dụng trong những trường hợp BlockCopy
nào? Bạn có nên sử dụng nó bất cứ lúc nào khi bạn đang sao chép các mảng kiểu nguyên thủy hay chỉ nên sử dụng nó nếu bạn đang viết mã cho hiệu suất? Có điều gì nguy hiểm về việc sử dụng Buffer.BlockCopy
quá mức Array.Copy
không?
byte[]
. Không có sự khác biệt trong phiên bản phát hành. Đôi khi Array.Copy
, đôi khi Buffer.BlockCopy
(hơi) nhanh hơn.
Array.Copy
là một phiên bản chuyên biệt hơn - ví dụ như nó chỉ có thể sao chép các mảng cùng thứ hạng.
Marshal.Copy
:-). Tốt, sử dụngArray.Copy
cho các kiểu tham chiếu, kiểu giá trị phức tạp và nếu kiểu không thay đổi,Buffer.BlockCopy
để "chuyển đổi" giữa các kiểu giá trị, mảng byte và phép byte. F.ex. sự kết hợp vớiStructLayout
khá mạnh mẽ nếu bạn biết mình đang làm gì. Đối với hiệu suất, có vẻ như cuộc gọi không được quản lý đếnmemcpy
/cpblk
là nhanh nhất cho điều đó - xem code4k.blogspot.nl/2010/10/… .