从函数返回空的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/

    10-11 16:52