2016-09-06 4 views
1

배열 객체 변수가 [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
+0

왜 처음에는'$ arr = @()'대신'[ref] $ arr = @()'을 사용하고 있습니까? –

+0

주 함수에서 사용하기 전에 참조가 필요하지 않았습니다. 주 함수는 특정 논리를 두 번 사용하기 때문에 몇 가지 유효성 검사 로직을 가진 동일합니다. 함수에 푸시하고 함수를 호출하는 것이 더 좋을 것이라고 생각했습니다. 참조하려고하는 변수는 변수가 사용 가능해야하는 다른 함수 호출에서 사용됩니다. –

답변

0

여전히 $InsertColHeadName = @()로 설정 배열로 작업을 수행하는 방법에 혼동하지만 다음과 같은 방법으로 주위에 갔다 :

나는 다음과 같은 오류를 얻고있다.

주 기능에서 배열을 Array = New-Object System.Collections.Generic.List[System.Object]으로 만들었습니다. 함수를 호출 할 때 매개 변수를 ([ref] $InsertColHeadName)으로 전달했습니다. 그때 maintenence 조금 쉽게하기 위해 주요 기능을 섞어 여부에 새로운 이름으로 [ref] $InsColHeadName로 매개 변수를 설정하고 PARAM에서 호출하는 함수 내부

($InsColHeadName.Value).Add(...);를 수행하여 배열에 값을 추가했다.

위의 내용은 main 함수로 돌아 왔을 때 작동하도록 참조로 전달했습니다.