簡體   English   中英

如何在 c# 中復制數組元素並使用 Array.Copy() 反轉某些元素?

[英]How do I copy the array elements and also reversing certain elements with Array.Copy() in c#?

SourceArray 的元素被復制到 2 個單獨的數組中,即 DestArray1 和 DestArray2。

輸出:

  • DestArray1 將具有 SourceArray 的前 4 個元素,但形式相反 [4 3 2 1]
  • DestArray2 將包含 SourceArray 的最后 4 個元素。 [5 6 7 8]

我想用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM