1

我在 PowerShell 中有如下内容

function x { 
    $result = New-Object 'System.Object[,,]' 1,1,1 
    'Type in function is: ' + $result.getType()
    $result[0,0,0] = 'dummy-value'
    return $result    
}

$result = x
$result.GetType()

奇怪的是,结果类型在方法中是Object[,,],但在外面突然变成了Object[]。对于我正在使用的一些 .Net 库,我基本上需要一些 Object[,,] 类型的参数。

有什么提示吗?

4

1 回答 1

3

要了解发生了什么,只需尝试输入:

PS C:\temp> $result[0]
Type in function is: System.Object[,,]
PS C:\temp> $result[1]
dummy-value

解释是将函数输出的所有内容放入数组中。

要做你想做的事,你必须写这个(不要忘记 $result 之前的 , ):

function x { 
    $result = New-Object 'System.Object[,,]' 1,1,1 
    $result[0,0,0] = 'dummy-value'
    return ,$result    
}

然后 :

PS C:\temp> $a = x
PS C:\temp> $a.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[,,]                               System.Array
于 2012-11-22T19:43:20.870 回答