所以我有我用C#編寫的代碼。它應該顛倒位陣列中的位的順序(不反轉它們)。通過大量使用斷點和手錶,我已經確定函數以某種方式修改了輸入參數數組array
和我拷貝的數組,以試圖使該函數不改變輸入數組,tempArray
。爲什麼這個C#函數的行爲像我使用指針?
static BitArray reverseBits(BitArray array)
{
BitArray tempArray = array;
int length = tempArray.Length;
int mid = length/2;
for (int i = 0; i < mid; i++)
{
bool tempBit = tempArray[i];
tempArray[i] = tempArray[length - 1 - i]; //the problem seems to be happening
tempArray[length - 1 - i] = tempBit; //somewhere in this vicinity
}
return tempArray;
}
我不知道爲什麼它的行爲是這樣的。當然,指針並不是我的強項,但我儘量避免使用它們,並且它們在c#中看起來並沒有太多用處,這就是爲什麼我對這種行爲感到困惑。
TL; DR:如果你通過我的功能00000001
,你會回到從功能10000000
,那是從外面通過array
將被改變成以及
附:這是與FFT相關的任務,這就是爲什麼我打擾了位反轉。
BitArray是引用類型,這樣你就不會做副本的時候你做的任務,要複製的參考。 –