PowerShell:差异[array] vs [array []]

时间:2019-09-22 19:48:58

标签: arrays powershell hashtable

我需要在一个称为PS脚本中声明一个数组参数。来自调用者/源脚本的数组在哈希表中:

$Array = @(1, 2, 3)
$myHashTable = @{myArr = $Array}

致电: Z:\ called.ps1 $ myHashTable

在“称为.ps1”中,两者之间有什么区别

Param(
$myArr
)

Param(
[array] $myArr
)

Param(
[array[]] $myArr
)

1 个答案:

答案 0 :(得分:1)

您可以直接进行测试。 [咧嘴]您的示例给出了...

  • 任何类型=保持该类型
  • 1d array =如果尚未转换为数组,则转换为
  • 2d array =如果尚未转换为锯齿状数组(数组数组)

演示代码...

function Test-Parameter
    {
    Param
        (
        $GenericVar,
        [array]$OneD_Array,
        [array[]]$TwoD_Array
        )

    $GenericVar.GetType()
    $OneD_Array.GetType()
    $TwoD_Array.GetType()
    }

Test-Parameter -GenericVar 'One' -OneD_Array 'Two' -TwoD_Array 'Three'

输出...

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object
True     True     Object[]                                 System.Array
True     True     Array[]                                  System.Array