Если вы хотите передать переменную и изменить ее в функции и использовать результат, есть два способа:
Передать по значению:
$arr = New-Object System.Collections.ArrayList
function FillObject([System.Collections.ArrayList]$array, [String] $myParam) {
return $array.Add($myParam)
}
$arr = FillObject -array $arr -myParam "something"
$arr.Count
Передать по ссылке (о чем вы спрашивали)
[System.Collections.Generic.List[String]]$lst = (New-Object System.Collections.Generic.List[String]])
function FillObject([System.Collections.Generic.List[String]][ref]$list,[String] $myParam) {
$list.Add($myParam)
}
FillObject -list ([ref]$lst) -myParam "something"
$lst.Count
Вы должны добавить [ref]
как в определении функции, так и при передаче параметра.Если это поможет вам - Powershell и C # полагаются на .NET, поэтому их синтаксис схож.C # способ использования ref
:
int number = 1;
void Method(ref int refArgument)
{
refArgument = refArgument + 44;
}
Method(ref number);