Is Array.Copy safe when the source and destination are the same array?
<p>I'm currently using Array.Copy to shift an array as such:</p>

<pre><code>Array.Copy(array, 0, array, 1, array.Length - 1);
</code></pre>

<p>It's noticeable faster than using a loop. I know that similar functions in other languages (eg. memcpy) are undefined or sometimes break when the compiler gets too aggressive. Is it reasonable to consider this safe in .NET? </p>
