Apart from the obvious difference that the first deals only with arrays, don't they do the same thing? I keep reading the help pages for the two functions, and can't understand when should I use one over the other and why. Internet search seems to indicate only the second is used whatsoever for array copying purposes if not written using loops.
System.Copy
is really compiler magic. It's applicable both to strings and to dynamic arrays.
Compiler chooses needed version of intrinsic routine (different for short strings, long strings, dynamic arrays) and substitutes your call of Copy
.
For dynamic arrays _DynArrayCopyRange
prepares memory, provides reference counting, and calls System.CopyArray
for deep copy of elements.
Usually you don't need to call the last procedure expicitly, it is compiler prerogative.