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

Cig*_*ul9 9 powershell

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

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

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

arc*_*444 18

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

[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
Run Code Online (Sandbox Code Playgroud)

默认情况下,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
Run Code Online (Sandbox Code Playgroud)

[string[]]创建时的使用$s1意味着3传递给数组的raw 已转换为String类型,与Int32存储在Object数组中时相反.