【发布时间】:2012-02-05 18:08:12
【问题描述】:
我有一个程序示例,它创建一个数组,然后尝试将该数组的值多次分配给另一个数组作为多维数组。
$a =@(0,0,0)
$b = @($a,$a,$a)
$b[1][2]=2
$b
'And $a is changed too:'
$a
输出是:
PS E:\Workarea> .\what.ps1
0
0
2
0
0
2
0
0
2
And $a is changed too:
0
0
2
所以在这种情况下,变量实际上是指向原始变量。这是非常意外的行为。可以做到这一点相当巧妙,尽管我在 C 编程中从未如此频繁地使用联合。但我想要一种方法来实际只分配值,而不是变量。
$b = @($a.clone(),$a.clone(),$a.clone())
我想会起作用,但有件事告诉我,可能还有比这更优雅的东西。
感谢您的意见。
这是 Windows 7 64 位下的 PowerShell 2.0。
【问题讨论】:
标签: arrays powershell variable-assignment