3

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

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

2 回答 2

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

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

在其他情况下是可选的。

于 2011-10-11T10:48:54.247 回答
2

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

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

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

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

help about_operators
于 2011-10-11T11:35:08.683 回答