返回

时间:2018-06-12 07:13:23

标签: powershell powershell-v5.0

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

2 个答案:

答案 0 :(得分:4)

默认情况下,

Powershell unrolls collections(虽然不是很一致)。您需要提示它在您的函数中显式返回集合:

  1. @($someSet)
  2. ,$someSet
  3. Write-Output -NoEnumerate $someSet

答案 1 :(得分:0)

试试这个功能

    function GetASet() {
        New-Object System.Collections.Generic.HashSet[int]
    }