2012-11-22 34 views
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 [,,]的參數來使用我正在使用的一些.Net庫。

任何提示?

回答

3

要明白髮生了什麼,只是盡力類型:

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

的解釋是一切是輸出FRM的功能被放入一個數組。

做你想做什麼,你必須寫這個(不要忘了,$結果之前):

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 
+0

非常感謝!到底是什麼我!這個魔法逗號是做什麼的? (a,b,c)給了我一個數組位,這似乎並不適用於此... –

+1

PowerShell在函數返回時展開數組。 ','只是給了一個擴展數組來擴展,所以我們收到一個數組。 – JPBlanc

+0

謝謝。 extrat數組是什麼意思?提取數組?一個空陣列。你能詳細說明一下「var」的語法嗎? –