У меня есть переменная объекта массива как [ref] $InsertColHeadName = @()
в функции, а затем вызывается другая функция с param ([ref] $InsertColHeadName)
. В вызываемой функции я попытался обратиться к моему параметру в параметре ([ref] $InsertColHeadName) += expression
. Выражение возвращает строку. Я поставил точку останова в строке и попытался форсировать строку с одинарными кавычками, например .: ([ref] $InsertColHeadName) += 'xyz';
.Установка переменной массива, которая передается по ссылке
Я пробовал искать походы, но, похоже, не нашел подходящего решения.
Я получаю следующее сообщение об ошибке:
Method invocation failed because [System.Management.Automation.PSReference`1 [[System.Management.Automation.PSReference`1 [[System.Management.Automation.PSReference`1 [[System.Object[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]] does not contain a method named 'op_Addition'. At line:1 char:1 + ([ref] $InsertColHeadName) += 'DepartmentNo'; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound
Почему вы используете '[ref] $ arr = @()' вместо '$ arr = @()' в первую очередь? –
Прежде, чем я использовал его внутри основной функции, он не нуждался в ссылке. Поскольку основная функция использует определенную логику пару раз, то же самое, что имеет некоторую логику проверки, я думал, что было бы лучше нажать ее на функцию и вызвать функцию. Переменная, которую я пытаюсь использовать, используется в другом вызове функции, которая может потребоваться, чтобы переменная была доступна. –