[英]How do I copy the array elements and also reversing certain elements with Array.Copy() in c#?
SourceArray 的元素被復制到 2 個單獨的數組中,即 DestArray1 和 DestArray2。
輸出:
我想用 Array.Copy() 方法替換 for 循環
如果沒有反轉,那么 Array.Copy() 除了最后一個元素之外工作得很好,但是要反向復制,似乎 Array.Copy 不起作用或者我無法實現它。
int i, j;
int bytelength =8;
int halfbytelength = 4;
byte[] SourceArray = new byte[]{ 1, 2, 3, 4, 5, 6, 7, 8 };
byte[] DestArray1 = new byte[4];
byte[] DestArray2 = new byte[4];
for (i = halfbytelength - 1, j = 0; i >= 0; i -= 1, j++)
{
DestArray1[j] = SourceArray[i];
}
for (i = halfbytelength; i < bytelength; i += 1)
{
DestArray2[i - halfbytelength] = SourceArray[i];
}
我嘗試按照代碼進行操作,但結果與(結果:) 中看到的不一樣,有沒有辦法做到這一點?
Array.Copy(SourceArray, 0, DestArray1, 3, 0);
Array.Copy(SourceArray, 4, DestArray2, 0, 3);
結果:
目標陣列 1:[0 0 0 0]
目標陣列2:[5 6 7 0]
第一個數組。
要反轉數組,您可以在復制后調用Array.Reverse()
:
Array.Copy(SourceArray, 0, DestArray1, 0, 4);
Array.Reverse(DestArray1);
第二個數組。
如果不反轉,那么 Array.Copy() 工作得很好,除了最后一個元素
因為您傳遞了無效的元素計數來復制(最后一個參數):
Array.Copy(SourceArray, 4, DestArray2, 0, 3); // 3 - elements count, not an index
只需將 3 替換為 4:
Array.Copy(SourceArray, 4, DestArray2, 0, 4); // 4 and it will copy including the last element
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.