为什么添加到 ArrayList 会计算传递给它的内容?
Why does adding to an ArrayList count whats being passed to it?
大家好,晚上好
我正在寻找在添加到 ArrayList 时是否可以在抑制计数方面获得一些帮助。出于某种原因,即使在 google 搜索之后我还是不明白,我就是无法抑制计数。
[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
方法 returns 一个 int :
$a =@()
$a.Add
OverloadDefinitions
-------------------
int IList.Add(System.Object value)
所以在你的情况下你可以使用 | out-null
.
来避免它
$AStuff.Add($_) | out-null
大家好,晚上好
我正在寻找在添加到 ArrayList 时是否可以在抑制计数方面获得一些帮助。出于某种原因,即使在 google 搜索之后我还是不明白,我就是无法抑制计数。
[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
方法 returns 一个 int :
$a =@()
$a.Add
OverloadDefinitions
-------------------
int IList.Add(System.Object value)
所以在你的情况下你可以使用 | out-null
.
$AStuff.Add($_) | out-null