我有一个函数返回全局变量的值。当我将这个结果分配给一个局部变量,并且改变本地值时,另一个变量也在改变。为什么更改本地变量值会影响全局副本
实施例:
function setGlobal
{
$temp = @{}
$temp.id = 50;
$Global:global1 = $temp;
return $Global:global1;
}
然后我调用此函数,并将结果设置值:
$result = setGlobal
$result.id = 80
现在两个变量具有相同的值。
$Global:global1 # id = 60
$result # id = 60
我该如何防止这种情况发生?为什么更改本地值会影响全局复制?
本地改变了全局,因为你实际上有两件事情,一个变量和一个变量指向的集合。你没有修改持有集合的变量,你正在修改集合本身.. –