Perché c'è una differenza nei valori di ritorno di F e G nel seguente codice?Restituzione del risultato di una chiamata di funzione con/senza parentesi
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]
Per quanto ho capito, se una funzione restituisce una sorta di collezione vuota, PowerShell sarà "scartare" in nulla, e così F fa quello che mi aspetto. Ma cosa sta succedendo con G?
Modifica: come indicato da JPBlanc, solo PowerShell 3.0 presenta questa differenza. Nel 2.0, entrambe le linee stampano null
. Cosa è cambiato?
Potresti spiegare per favore? –
Non credo che sia corretto. In 'Write-Type F', il' F' sarà interpretato come la stringa '" F "', che non è quello che voglio. – ahihi
non esattamente, @JPBlanc ha ragione, non dovresti inserire gli argomenti delle funzioni tra parentesi, ma non ho trovato la spiegazione del perché. il design o le parentesi dell'età fa qualcosa di speciale. Affinché F sia trattato come stringa, devi racchiuderlo tra virgolette. Quindi F è un oggetto e "F" è una stringa. –