Dan*_*Dan 4 powershell return object
我有一个简单的函数,可以创建一个通用List:
function test()
{
$genericType = [Type] "System.Collections.Generic.List``1"
[type[]] $typedParameters = ,"System.String"
$closedType = $genericType.MakeGenericType($typedParameters)
[Activator]::CreateInstance($closedType)
}
$a = test
Run Code Online (Sandbox Code Playgroud)
问题是,$a无论我尝试什么,它总是为空.如果我在函数之外执行相同的代码,它可以正常工作.
思考?
恕我直言,陷阱#1.如果从函数中返回一个以某种方式可枚举的对象(我不确切知道实现IEnumerable是否是唯一的情况),PowerShell将展开该对象并返回其中的项目.
您新创建的列表为空,因此未返回任何内容.为了使它工作只需使用:
,[Activator]::CreateInstance($closedType)
Run Code Online (Sandbox Code Playgroud)
这将使得一个项目数组被展开并且项目(通用列表)被分配给$a.
更多信息
以下是类似问题的列表,可帮助您了解正在发生的事情:
注意:您不需要使用括号声明函数头.如果需要添加参数,该函数将如下所示:
function test {
param($myParameter, $myParameter2)
}
Run Code Online (Sandbox Code Playgroud)
要么
function {
param(
[Parameter(Mandatory=true, Position=0)]$myParameter,
... again $myParameter2)
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |