从函数返回空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
答案 0 :(得分:4)
Powershell unrolls collections(虽然不是很一致)。您需要提示它在您的函数中显式返回集合:
@($someSet)
,$someSet
Write-Output -NoEnumerate $someSet
答案 1 :(得分:0)
试试这个功能
function GetASet() {
New-Object System.Collections.Generic.HashSet[int]
}