Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 字符串和数组的奇怪行为_Arrays_String_Powershell - Fatal编程技术网

Arrays 字符串和数组的奇怪行为

Arrays 字符串和数组的奇怪行为,arrays,string,powershell,Arrays,String,Powershell,在这里,我将数组的值赋给一个变量,然后改变变量,数组也会改变 $TestArray=@{“ValueA”=“A”;“ValueB”=“B”;“Number”=“B”} $TestNumbers=1..10 foreach($testnumbers中的数字){ $results=$TestArray $results.Number=$Number 写入主机$TestArray.Number } 我原以为$results=$TestArray会复制$TestArray,但此测试表明修改$resul

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

$TestArray=@{“ValueA”=“A”;“ValueB”=“B”;“Number”=“B”}
$TestNumbers=1..10
foreach($testnumbers中的数字){
$results=$TestArray
$results.Number=$Number
写入主机$TestArray.Number
}
我原以为
$results=$TestArray
会复制
$TestArray
,但此测试表明修改
$results
也会更改
$TestArray
中的相应值

有人能帮我理解这种行为吗?

做:

$results=$TestArray
$results
作为对
TestArray
引用的同一对象的引用。因此,如果更改其中一个,另一个也会受到影响,因为它们是相同的对象


要使
$results
成为
$TestArray
的副本,您可以使用其:

$results=$TestArray.Clone()

另外,请注意,
$TestArray
实际上不是数组。它是一个(也称为hashmap),其中键与值配对。数组类似于:

$TestArray=(1,2,3)
执行以下操作:

$results=$TestArray
$results
作为对
TestArray
引用的同一对象的引用。因此,如果更改其中一个,另一个也会受到影响,因为它们是相同的对象


要使
$results
成为
$TestArray
的副本,您可以使用其:

$results=$TestArray.Clone()

另外,请注意,
$TestArray
实际上不是数组。它是一个(也称为hashmap),其中键与值配对。数组类似于:

$TestArray=(1,2,3)

谢谢,我真的很惊讶我刚刚才注意到这种行为。这是有道理的。我想知道引用行为是否适用于所有字符串、数组、哈希表和对象?这取决于所讨论的对象是否可以变异。如果它类似于哈希表,那么是的,因为您可以从中添加/删除项。如果它是一个不可变的对象,如字符串,则不会,因为字符串不能更改(对它们的所有操作都会生成新对象,而不是修改旧对象)。以下是关于可变对象和不可变对象之间区别的解释:。谢谢,我真的很惊讶我刚刚才注意到这种行为。这是有道理的。我想知道引用行为是否适用于所有字符串、数组、哈希表和对象?这取决于所讨论的对象是否可以变异。如果它类似于哈希表,那么是的,因为您可以从中添加/删除项。如果它是一个不可变的对象,如字符串,则不会,因为字符串不能更改(对它们的所有操作都会生成新对象,而不是修改旧对象)。下面是关于可变对象和不可变对象之间区别的解释:。