2015-06-17 35 views
0

以下代碼Buffer.BlockCopy不適用於雙數組?

double[] src = new[] { 1d, 1d, 2d }; 
double[] dst = new[] { 0d, 0d, 0d }; 
Buffer.BlockCopy(src, 0, dst, 0, 3); 
for (int i = 0; i < 3; i++) 
{ 
    Console.Write(src[i] + " "); 
} 
Console.WriteLine(); 
for (int i = 0; i < 3; i++) 
{ 
    Console.Write(dst[i] + " "); 
} 
Console.WriteLine(); 

輸出

1 1 2 
0 0 0 

我預期在兩條線上相同的值?

https://dotnetfiddle.net/AH2ebt

回答

1

你告訴BlockCopy複製3個字節。你想

Buffer.BlockCopy(src, 0, dst, 0, 24); 

Buffer.BlockCopy(src, 0, dst, 0, 3 * sizeof(double)); 

...爲了複製所有24個字節。 Buffer.BlockCopy的第五個參數記錄爲:

要複製的字節數。

不是要複製的數組元素的數量。

+0

哦謝謝你的快速答案,我想我錯過了「複製的字節數」。計數的一部分! – Peter