If you just want to cast the array (from one value type to another) and the array is very large, the overhead of copying all data using Array.Copy might be significant. There is a dirty trick to cast the array without copying. This trick is explained here:
http://kristofverbiest.blogspot.com/2008/11/casting-array-of-value-types.html