次のコードで F と G の戻り値に違いがあるのはなぜですか?
Function F {
Return (New-Object Collections.Generic.LinkedList[Object])
}
Function G {
Return New-Object Collections.Generic.LinkedList[Object]
}
Function Write-Type($x) {
If($null -eq $x) {
Write-Host "null"
} Else {
Write-Host $x.GetType()
}
}
Write-Type (F) # -> null
Write-Type (G) # -> System.Collections.Generic.LinkedList`1[System.Object]
私が理解している限りでは、関数が何らかの空のコレクションを返す場合、PowerShell はそれを null に "アンラップ" するので、F は私の期待どおりに動作します。しかし、G はどうしたのでしょうか。
編集: JPBlanc が指摘したように、PowerShell 3.0 のみがこの違いを示します。2.0 では、両方の行が出力されますnull
。何が変わったのですか?