PowerShell:数组表示法之间的区别?

时间:2011-10-11 10:46:35

标签: arrays powershell powershell-v2.0 notation

这两个数组创建语句之间有区别吗?那么,在创建数组时,'@'是可选的吗?

$a = "This", "Is", "a", "cat"
$a.GetType()
$a | gm
$a = @("This", "Is", "a", "cat")
$a.GetType()
$a | gm

2 个答案:

答案 0 :(得分:6)

$a = @() # declare an empty array.

$a = @(mysingleitem) # declare an array with a single element

在其他情况下是可选的。

答案 1 :(得分:2)

  

这两个数组创建语句之间有区别吗?

虽然我不是100%肯定(这取决于PowerShell的胆量),但差异可能如下:"This", "Is", "a", "cat"创建一个数组。 @("This", "Is", "a", "cat")创建相同的数组,然后将运算符@()应用于它(在这种特殊情况下显然是冗余操作)。

使用,例如,this profiler我们可以看到第二个表达式相当慢(14%或者其他),所以我的猜测可能是正确的。理想情况下,PowerShell代码解释器可以以相同的方式处理这两个表达式,但它可能不会。

另请参阅帮助主题(最后,关于运算符@(),

help about_operators