数组是引用类型,元素保存在堆上,栈上保存的是地址。
1.Buffer.BlockCopy
| public static void BlockCopy (Array src, int srcOffset, Array dst, int dstOffset, int count); |
| int[] arrold = new int[100000]; |
| int[] arrnew = new int[100000]; |
| |
| |
| for(int i = 0; i < arrold.Length; ++i) |
| { |
| arrold[i] = i; |
| } |
| |
| Stopwatch sw = new Stopwatch(); |
| sw.Start(); |
| Buffer.BlockCopy(arrold, 0, arrnew, 0, arrold.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) |
| |
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(); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)