我试图找到有关何时使用[string[]]$MyStuff
的信息。这是一个字符数组,还是只包含显式字符串元素的数组,或者......?
我已经在脚本示例中看到过这种情况,但它并不清楚。我经常看到它用于接收某些非本机实用程序文本输出的变量,或者用作函数输入参数的数据类型。
这些额外括号是什么意思?
答案 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”。等等。