次のコードで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はヌルにそれを「アンラップ」になり、そうFは、私が何を期待しません。しかし、Gで何が起こっているのですか?
編集:JPBlancから指摘されているように、PowerShell 3.0だけがこの違いを示しています。 2.0では、両方の行がnull
と表示されます。何が変わったの?
説明してもらえますか? –
'Write-Type F'では、' F'は文字列 '' F "'として解釈されますが、これは私が望むものではありません。 – ahihi
正確には、@ JPBlancは実際には正しいですが、大カッコ内に関数の引数を入れてはいけません。しかし、なぜ説明できないのですか。年齢のデザインや括弧は特別なことをします。 Fを文字列として扱うには、引用符で囲む必要があります。したがって、Fはオブジェクトであり、 "F"は文字列です。 –