@ASerge, you are right but another thing, using a loop to simulate copy won't create a true "copy" if the data contained in the array is a reference type, rather it will just change the pointer reference, but the inbuilt "Copy" function will take that into consideration and always create a true "Copy".
@Handoko, using "Move" will break reference counting for managed type so it is not safe.