在Powershell中,什么样的数据类型是[string []]以及何时使用它?

时间:2014-11-05 15:58:19

标签: powershell

我试图找到有关何时使用[string[]]$MyStuff的信息。这是一个字符数组,还是只包含显式字符串元素的数组,或者......?

我已经在脚本示例中看到过这种情况,但它并不清楚。我经常看到它用于接收某些非本机实用程序文本输出的变量,或者用作函数输入参数的数据类型。

这些额外括号是什么意思?

2 个答案:

答案 0 :(得分:16)

它定义了一个字符串数组。考虑以下初始化数组的方法:

[PS] > [string[]]$s1 = "foo","bar","one","two",3,4
[PS] > $s2 = "foo","bar","one","two",3,4

[PS] > $s1.gettype()

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

[PS] > $s2.gettype()

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

默认情况下,powershell数组是一个对象数组,如有必要,它将转换为特定类型。看看它们是如何确定每种类型的第5个元素是什么类型:

[PS] > $s1[4].gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object


[PS] > $s2[4].gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType


[PS] > $s1[4]
3
[PS] > $s2[4]
3

在创建[string[]]时使用$s1意味着传递给数组的原始3已转换为String类型而不是{{1}存储在Int32数组中时。

答案 1 :(得分:2)

这是一个字符串数组。例如:

[string[]] $var = @("Batman", "Robin", "The Joker")

那么你可以这样访问你的数组:

$var[0]

返回“蝙蝠侠”

$var[1]

返回“Robin”。等等。