数组是引用类型,元素保存在堆上,栈上保存的是地址。
1.Buffer.BlockCopy
int[] arrold = new int[100000];
int[] arrnew = new int[100000];
//foreach不能修改遍历集合的元素内容
for(int i = 0; i < arrold.Length; ++i)
{
arrold[i] = i;
}
Stopwatch sw = new Stopwatch();
sw.Start();
Buffer.BlockCopy(oldarray, newarray, newarray.Length);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
这种方式理论上是效率最高的。
2.Array.Copy
Array的静态方法:
Array.Copy(oldarray, newarray, newarray.Length)
Array.Copy(oldarray, offset_oldarray,
newarray, offset_newarray, length)
//从oldarray的偏移量offset_oldarray处拷贝length个元素到newarray,从newarray的偏移量offset_newarray处。
3.Clone
只要是实现了ICloneable接口的类都可调用Clone进行拷贝。
int[] arrold = new int[100000];
int[] arrnew = new int[100000];
arrnew = arrold.Clone();
4.linq遍历
newarr = oldarry.Select(x=>x).ToArray();
标签:C#,oldarray,int,newarray,数组,offset,new,拷贝,arrold
From: https://www.cnblogs.com/wk2522466153/p/17379508.html