Warum gibt es einen Unterschied in den Rückgabewerten von F und G in dem folgenden Code?das Ergebnis eines Funktionsaufruf zurückkehrend mit/ohne Klammer
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]
Soweit ich verstehe, wenn eine Funktion eine Art leerer Auflistung zurückgibt, wird Powershell „auspacken“ es in null, und so F tut, was ich erwarte. Aber was ist mit G los?
Edit: Wie von JPBlanc hingewiesen, zeigt nur PowerShell 3.0 diesen Unterschied. In 2.0, drucken Sie beiden Linien null
. Was hat sich geändert?
Könnten Sie bitte erklären? –
Ich glaube nicht, dass das richtig ist. In 'Write-Type F' wird das' F' als die Saite '" F "interpretiert, was nicht das ist, was ich will. – ahihi
nicht genau, @JPBlanc hat eigentlich recht, du solltest keine Funktionsargumente in Klammern setzen, aber ich konnte keine Erklärung dafür finden Alter Design oder Klammern macht etwas Besonderes. Damit F als String behandelt wird, müssten Sie es mit Anführungszeichen umgeben. Also ist F ein Objekt und "F" ist eine Zeichenkette. –