我试图找到以C#返回数组的一部分的最快方法我目前的方式如下:
// .. set int moveCount ..
// .. set int[] childArray ..
int[] realArray = new int[moveCount];
Array.Copy(childArray, realArray, moveCount);
return realArray;
Run Code Online (Sandbox Code Playgroud)
这是我在网上到处看到的方式,但我想知道现在是否会复制数组两次.一次是因为我这样做了,一次因为回来了.
不,当你返回时,你将返回对你刚刚创建的数组的引用.该参考文献将被复制,但这很便宜.
所有数组都是引用类型,即使数组的元素类型是值类型(int[]即使int是值类型也是引用类型).
现在你仍然可以考虑返回ArraySegment<int>而不是int[]- 这样你最终不会复制数组中的任何值.另一方面,如果更改了原始数组,那些更改将影响调用者看到的内容(同样调用者可以更改数组内容).
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |