我正在尝试根据this回答在我的powershell脚本中使用HashSet
。
Add-Type -AssemblyName System.Core
$set= new-object 'System.Collections.Generic.HashSet[string]'
但是如果我创建一个期望这样的集合的函数
function foo([Parameter(Mandatory=$true)][Collections.Generic.HashSet[string]]$set){
并传入集合
foo($set)
如果$set
为空,我会收到错误:
Cannot bind argument to parameter '$set' because it is an empty collection.
+ CategoryInfo : InvalidData: (:) [script.ps1], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyCollectionNotAllowed,script.ps1
但如果我事先向$set
添加内容,我就不会遇到问题。
为什么参数不能绑定到空集,我怎样才能将它绑定到这样的集合?
答案 0 :(得分:3)
您可以使用AllowEmptyCollection
属性将该函数标记为允许空HashTable:
function foo([Parameter(Mandatory=$true)][AllowEmptyCollection()][Collections.Generic.HashSet[string]]$set)