[ref]が必要かと思ったら、そのまま渡すのが正解だった。
PowerShellでは、上記定義すると、$MyClassAに格納されているのは、 [system.Dynamic.ExpandoObject]で生成するオブジェクトのポインタなのだろう。
それを引数に渡すから、[ref]を指定しなくてもいいのだろうと解釈しました。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[int]$global:index = 0 | |
function MyFunc() | |
{ | |
param([system.Dynamic.ExpandoObject]$obj) | |
$global:index += 1 | |
[string]$obj.MyValue = "MyFunc Exec No=" + $index + (Get-Date -f " yyyy/MM/dd/ hh:mm:ss").ToString() | |
} | |
function MyFuncForValue() | |
{ | |
param([system.Dynamic.ExpandoObject]$obj) | |
$global:index += 1 | |
[string]$obj.MyValue = "MyFuncForValue Exec No=" + $index + (Get-Date -f " yyyy/MM/dd/ hh:mm:ss").ToString() | |
} | |
[system.Dynamic.ExpandoObject]$MyClassA = [system.Dynamic.ExpandoObject]::new() | |
$MyClassA.MyValue = "Init MyClassA MyValue" | |
Write-Host $MyClassA.MyValue | |
MyFunc $MyClassA | |
Write-Host $MyClassA.MyValue | |
MyFuncForValue($MyClassA) | |
Write-Host $MyClassA.MyValue | |
[system.Dynamic.ExpandoObject]$MyClassB = [system.Dynamic.ExpandoObject]::new() | |
$MyClassB.MyValue = "Init MyClassB MyValue" | |
Write-Host $MyClassB.MyValue | |
MyFunc $MyClassB | |
Write-Host $MyClassB.MyValue | |
MyFuncForValue($MyClassB) | |
Write-Host $MyClassB.MyValue |
実行結果
コメント