Array.Copy i Buffer.BlockCopy robią to samo, ale BlockCopymają na celu szybkie kopiowanie tablic pierwotnych na poziomie bajtów, podczas gdy Copyjest to implementacja ogólnego przeznaczenia. Moje pytanie brzmi - w jakich okolicznościach należy używać BlockCopy? Czy należy go używać w dowolnym momencie podczas kopiowania tablic typów pierwotnych, czy też należy go używać tylko wtedy, gdy kodujesz pod kątem wydajności? Czy jest coś z natury niebezpiecznego w używaniu Buffer.BlockCopywięcej Array.Copy?
byte[]. Nie było różnicy w wersji wydania. Czasami Array.Copy, czasami Buffer.BlockCopy(nieco) szybciej.
Array.Copyjest raczej wersją wyspecjalizowaną - na przykład może kopiować tylko te same tablice rangi.
Marshal.Copy:-). Cóż, użyjArray.Copydla typów referencyjnych, złożonych typów wartości i jeśli typ się nie zmienia,Buffer.BlockCopydo „konwersji” między typami wartości, tablicami bajtów i magią bajtów. F.ex. połączenie zStructLayoutjest dość potężne, jeśli wiesz, co robisz. Jeśli chodzi o wydajność, wydaje się, że najszybsze w tym celu wywołaniememcpy/cpblkjest niezarządzane - patrz code4k.blogspot.nl/2010/10/… .