Hashtable参数表示像引用变量

时间:2015-06-26 21:28:52

标签: powershell powershell-v3.0

看起来如果将哈希表作为参数传递给函数并修改函数为该哈希表创建的变量,原始变量也会被修改。因此哈希表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

0 个答案:

没有答案