gpt4 book ai didi

powershell - 返回带/不带括号的函数调用结果

转载 作者:行者123 更新时间:2023-12-04 20:46:09 24 4
gpt4 key购买 nike

为什么下面代码中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 .发生了什么变化?

最佳答案

抱歉,我没有正确阅读您的问题,因为 F 是您使用 () 来评估该函数的函数。那么 Write-Type 的结果功能在 PowerShell V2.0 中对我来说是一样的。

因此,在 PowerShell 3.0 中,我遇到了您的问题。

现在使用:

Trace-Command -name TypeConversion -Expression {Write-Type (F)} -PSHost

相对
Trace-Command -name TypeConversion -Expression {Write-Type (G)} -PSHost

据我了解的 () 之前返回对象生成以下
 Converting "Collections.Generic.LinkedList" to "System.Type".
Conversion to System.Type
Conversion to System.Type
Could not find a match for "System.Collections.Generic.LinkedList".
Could not find a match for "Collections.Generic.LinkedList".
Converting "Collections.Generic.LinkedList`1" to "System.Type".
Conversion to System.Type
Conversion to System.Type
Found "System.Collections.Generic.LinkedList`1[T]" in the loaded assemblies.
Converting "Object" to "System.Type".
Conversion to System.Type
Conversion to System.Type
Found "System.Object" in the loaded assemblies.

关于powershell - 返回带/不带括号的函数调用结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com