字符串和数组的奇怪行为

时间:2015-05-27 14:58:27

标签: arrays string powershell

这里我将数组的值赋给变量,然后我改变变量,数组也会改变。

$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

中的相应值

任何人都可以帮我理解这种行为吗?

1 个答案:

答案 0 :(得分:4)

这样做的:

$results = $TestArray

会将$results 引用设为TestArray引用的同一对象。因此,如果你改变一个,另一个也会受到影响,因为它们是同一个对象。

要改为$results $TestArray $results = $TestArray.Clone() ,您可以使用Clone method

$TestArray

另外,仅为记录,$TestArray = (1, 2, 3) 实际上不是数组。它是一个hashtable(也称为散列映射),其中键与值配对。数组类似于:

<ItemsControl>