hakeの日記

Windows環境でプログラミングの勉強をしています。

PowerShell - 関数(値渡しと参照渡し)

参照渡しの場合、呼び出し側の引数に[ref]をつける、また引数に括弧がないとエラーになった。
関数定義の仮引数の[ref]は無くても良い、関数内では仮引数のValueプロパティにアクセスする。

# 値渡し
function byVal($arg){
    $arg = "Good Bye"
    Write-Host "in Function : $arg"
}

# 参照渡し
function byRef([ref]$arg){
    $arg.Value= "Good Bye"  # Valueプロパティにアクセス
    Write-Host "in Function : $($arg.Value)"
}


$a = "Hello"
$a
byVal $a      # 値渡し
$a            # Hello


$a = "Hello"
byRef([ref]$a) # 参照渡し
$a             # Good Bye