У меня есть пользовательский класс C
с 2 функциями fun1
и fun2
. fun2
звонки fun1
. Я создаю экземпляр класса C
, передаю его в скрипт $s
и вызываю скрипт. Если скрипт $s
просто вызывает fun1
, все работает нормально, и я получаю ожидаемый результат 'something'
. Однако, если скрипт $s
вызывает fun2
, скрипт продолжит работу и никогда не завершится. Почему он застрял? Ниже приведен код. Моя версия powershell 5.1.
class C{
[object]fun1(){
return 'something'
}
[object]fun2(){
return $this.fun1()
}
}
$s = {
param($p)
$p.fun2() # the script won't stuck if this line is changed to $p.fun1()
}
[powershell]::Create().AddScript($s).AddParameters(@{ p = [C]::new() }).Invoke()
Я попытался вызвать скрипт $s
, используя & $s -p ([C]::new())
, и он работает нормально. Но я хочу понять, почему при вызове сценария [powershell]::Create()
все по-другому.