0
奇怪的行为在这里,我将数组分配给一个变量的值,然后我改变变量,数组变化也。与字符串和数组
$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
相应的值
谁能帮助我理解这种行为?
谢谢,我真的很惊讶,我只注意到这种行为。 它是有道理的。 我想知道是适用于所有字符串数组哈希表和对象的_reference_行为? – beehaus
这取决于如果有问题的对象可以被突变或没有。如果它是一个哈希表,那么是的,因为你可以添加/删除项目。如果它是一个不可变的对象,比如一个字符串,那么不可以,因为字符串不能被改变(对它们的所有操作都会产生新的对象而不是修改旧的对象)。以下是对可变对象和不可变对象之间区别的解释:http://en.wikipedia.org/wiki/Immutable_object。 – iCodez