从函数返回空的HashSet
会将对象变为null。是什么导致了这种现象,有什么办法可以解决呢?我不想到处都需要特殊的空集大小写(即现在必须是if ($set.Contains(something))
而不是干净的if ($set -and $set.Contains(something))
)。
function GetASet() {
$someSet = New-Object System.Collections.Generic.HashSet[int]
$someSet
}
[System.Collections.Generic.HashSet[int]]$set = GetASet
$set -eq $null # this is true
最佳答案
默认情况下,Powershell unrolls collections(尽管不是很一致)。您需要提示它在函数中显式返回collection:
@($someSet)
,$someSet
Write-Output -NoEnumerate $someSet
关于powershell - 空HashSet在返回时变为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50811278/