我有一個函數返回全局變量的值。當我將這個結果分配給一個局部變量,並且改變本地值時,另一個變量也在改變。爲什麼更改本地變量值會影響全局副本
實施例:
function setGlobal
{
$temp = @{}
$temp.id = 50;
$Global:global1 = $temp;
return $Global:global1;
}
然後我調用此函數,並將結果設置值:
$result = setGlobal
$result.id = 80
現在兩個變量具有相同的值。
$Global:global1 # id = 60
$result # id = 60
我該如何防止這種情況發生?爲什麼更改本地值會影響全局複製?
本地改變了全局,因爲你實際上有兩件事情,一個變量和一個變量指向的集合。你沒有修改持有集合的變量,你正在修改集合本身.. –