【发布时间】:2016-09-06 16:00:05
【问题描述】:
我在函数中有一个数组对象变量[ref] $InsertColHeadName = @(),然后用param ([ref] $InsertColHeadName) 调用另一个函数。在被调用的函数中,我尝试引用参数([ref] $InsertColHeadName) += expression 中的参数集。表达式返回一个字符串。我在该行中放置了一个断点并尝试用单引号强制一个字符串,例如:([ref] $InsertColHeadName) += 'xyz';。
我尝试谷歌搜索,但似乎找不到合适的解决方案。
我收到以下错误:
方法调用失败,因为 [System.Management.Automation.PSReference`1
[[System.Management.Automation.PSReference`1
[[System.Management.Automation.PSReference`1
[[System.Object[],mscorlib,版本=4.0.0.0,文化=中性,
PublicKeyToken=b77a5c561934e089]],System.Management.Automation,版本=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35]],System.Management.Automation,
版本=3.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35]]] 不
包含一个名为“op_Addition”的方法。
在行:1 字符:1
+ ([ref] $InsertColHeadName) += 'DepartmentNo';
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
【问题讨论】:
-
你为什么首先使用
[ref]$arr = @()而不是$arr = @()? -
在我在 main 函数中使用它之前,它不需要引用。由于主函数多次使用特定逻辑,这与具有一些验证逻辑的逻辑相同,我认为将其推送到函数并调用该函数会更好。我试图引用的变量在另一个可能需要该变量可用的函数调用中使用。
标签: powershell