传入空集会引发错误
Passing in an empty set throws an error
我正在尝试根据 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
添加一些内容,我就不会遇到问题。
为什么参数不能绑定到空集,我怎样才能让它绑定到这样的集?
您可以使用 AllowEmptyCollection
属性将函数标记为允许空哈希表:
function foo([Parameter(Mandatory=$true)][AllowEmptyCollection()][Collections.Generic.HashSet[string]]$set)
我正在尝试根据 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
添加一些内容,我就不会遇到问题。
为什么参数不能绑定到空集,我怎样才能让它绑定到这样的集?
您可以使用 AllowEmptyCollection
属性将函数标记为允许空哈希表:
function foo([Parameter(Mandatory=$true)][AllowEmptyCollection()][Collections.Generic.HashSet[string]]$set)