微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么添加到 ArrayList 会计算传递给它的内容?

如何解决为什么添加到 ArrayList 会计算传递给它的内容?

大家晚上好

我想看看在添加到 ArrayList 时是否可以获得一些帮助来抑制计数。出于某种原因,即使在我的谷歌搜索之后我也不明白,我就是无法抑制计数。

[System.Collections.ArrayList]$AStuff = @()
[System.Collections.ArrayList]$CStuff = @()
[System.Collections.ArrayList]$Rest = @()

switch -Wildcard (gci C:\users\abrah\OneDrive\Desktop){
    "D*" {$AStuff.Add($_)}
    "C*" {$CStuff.Add($_)}
    Default {$Rest.Add($_)}
    }

for($i=0; $i -lt ($AStuff.Count + $CStuff.Count + $Rest.Count); $i++){
    [pscustomobject]@{
        "Letter A" = $AStuff[$i]
        "Letter C" = $CStuff[$i]
        "Rest " = $Rest[$i]
    }
}

输出为:


0
1
0
1
0
1
2
3
2
3
4

Letter A Letter C                  Rest                            
-------- --------                  -----                           
dir1     CFR-2008-title38-vol1.pdf Test                            
dir2     cs.csv                    v1                              
         CSV                       error.png                       
         csvv.csv                  Screenshot 2021-01-09 195943.png
                                   v2.pdf                          
                                                 

有人能告诉我为什么输出计数是怎么回事吗?

如果事情真的很简单,请不要觉得有必要回答,一个简短的解释就可以了,如果是这样的话,我应该能够解决它。

  • 顺便说一句,有没有更有效的方法添加到如上所示的对象中?

解决方法

这只是因为 Add 方法返回一个 int :

$a =@()
$a.Add

OverloadDefinitions                 
-------------------                 
int IList.Add(System.Object value) 

因此,在您的情况下,您可以使用 | out-null 来避免它。

$AStuff.Add($_) | out-null

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。