这两个数组创建语句之间有区别吗?那么,在创建数组时,'@'是可选的吗?
$a = "This", "Is", "a", "cat"
$a.GetType()
$a | gm
$a = @("This", "Is", "a", "cat")
$a.GetType()
$a | gm
答案 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