【发布时间】:2018-11-06 06:31:02
【问题描述】:
我正在使用 PowerShell 2.0。当我将一个新变量作为数组创建,然后将另一个变量设置为等于第一个变量时,第二个变量“镜像”第一个变量。更改原始数组中的对象后,完全相同的更改出现在第二个数组中。例如,
$array0001 = 6, 7, 3, 4, 0
$array0002 = $array0001
$array0001[3] = 55
$array0002
输出为
6
7
3
55
0
我注意到,当您将第二个变量设置为与第一个变量具有相同的值时,除了这次包含在子表达式运算符中之外,对第一个数组的修改不会影响第二个数组。例如,
$array0001 = 6, 7, 3, 4, 0
$array0002 = $($array0001)
$array0001[3] = 55
$array0002
输出为
6
7
3
4
0
为什么将值包含在子表达式运算符中会改变变量的行为?是否有另一种或更好的方法来避免使数组变量相互“镜像”?
ETA:我现在发现$array0002 = @($array0001) 和$array0002 = &{$array0001} 都实现了完全相同的目标。
【问题讨论】:
标签: powershell