这里我将数组的值赋给变量,然后我改变变量,数组也会改变。
$TestArray = @{ "ValueA" = "A" ; "ValueB" = "B" ; "Number" = "" }
$TestNumbers = 1..10
foreach ($number in $testnumbers) {
$results = $TestArray
$results.Number = $number
Write-Host $TestArray.Number
}
我认为$results = $TestArray
会复制$TestArray
,但此测试表明修改$results
也会更改$TestArray
任何人都可以帮我理解这种行为吗?
答案 0 :(得分:4)
这样做的:
$results = $TestArray
会将$results
引用设为TestArray
引用的同一对象。因此,如果你改变一个,另一个也会受到影响,因为它们是同一个对象。
要改为$results
$TestArray
$results = $TestArray.Clone()
,您可以使用Clone
method:
$TestArray
另外,仅为记录,$TestArray = (1, 2, 3)
实际上不是数组。它是一个hashtable(也称为散列映射),其中键与值配对。数组类似于:
<ItemsControl>