看起来如果将哈希表作为参数传递给函数并修改函数为该哈希表创建的变量,原始变量也会被修改。因此哈希表paramater就像一个引用变量。这是为什么?
可能更好地解释这个的例子:
function testParams ([hashtable]$hashParam, [string]$strParam) {
$hashParam.Remove('a')
$strParam = "I am a string"
}
$str = "a string"
$ht = @{}
$ht['a'] = 'aaaa'
$ht['b'] = 'bbbb'
$ht['c'] = 'cccc'
testParams $ht $string
Write-Host $str
Write-Host "$($ht | Out-String)"
......那将输出:
a string
Name Value
---- -----
c cccc
b bbbb
编辑:刚刚找到一个更简单的例子:
$ht = @{}
$ht[1] = '1111'
$ht[2] = '2222'
$htCopy = $ht
$htCopy.Remove(1)
$ht
哪个会输出:
Name Value
---- -----
2 2222