为什么反转arraylist没有显示任何结果?

Sam*_*abu 2 powershell arraylist

我试图反转队列并使其成为堆栈.但它没有显示任何输出.

$queue = [System.Collections.ArrayList]@()

$queue.Add("Object1") | Out-Null
$queue.Add("Object2") | Out-Null
"=========== Queue ================"
foreach ($i in $queue) {
    $i
}

$stack = $queue.Reverse()
"=========== stack ================"
foreach ($i in $stack) {
    $i
}
Run Code Online (Sandbox Code Playgroud)

我期待如下结果

=========== Queue ================
Object1
Object2
=========== stack ================
Object2
Object1
Run Code Online (Sandbox Code Playgroud)

但是堆栈结果没有给出如下任何值

=========== Queue ================
Object1
Object2
=========== stack ================
Run Code Online (Sandbox Code Playgroud)

这有什么不对?怎么纠正呢?

EBG*_*een 9

.Reverse() 不返回对象,它会反转调用它的对象的元素:

$queue = [System.Collections.ArrayList]@()

$queue.Add("Object1") | Out-null
$queue.Add("Object2") | Out-null
"=========== Queue ================"
foreach ($i in $queue){
    $i
}

$queue.Reverse()  # <<<<<<<<<< Reverse $queue *in place*.
"=========== stack ================"
foreach($i in $queue)
{
    $i
}
Run Code Online (Sandbox Code Playgroud)

  • 为了将来的参考,`$ queue.Reverse`会显示`Reverse()`的重载签名,包括它总是返回`void`的事实. (5认同)
  • @EBGreen:的确,`Get-Member -InputObject $ queue Reverse`也可以,但是`$ queue.Reverse`的优点(除了更短)是你在自己的行上得到每个重载,这更容易阅读,特别是有很多重载. (3认同)