Arraylist é passada para funções por referência no PowerShell
Descobri hoje que um arraylist que eu passei para uma função é alterado quando removo um valor do arraylist dentro da função. O código abaixo parece sugerir que a passagem está acontecendo por referência. Por que isso seria? Isso ocorre por design ou algum tipo de bug? (Estou usando a v4 no Windows 8.1)
function myfunction {
param (
[System.Collections.ArrayList]$local
)
"`$local: " + $local.count
"removing 1 from `$local"
$local.RemoveAt(0)
"`$local:" + $local.count
}
[System.Collections.ArrayList]$names=(Get-Content c:\temp\names.txt)
"`$names: " + $names.count
myfunction -local $names
"`$names: " + $names.count
RESULTADO:
$names: 16
$local: 16
removing 1 from $local
$local:15
$names: 15