답변:
$array.Add()
-method를 사용할 때 기존 배열에 요소를 추가하려고합니다. 배열은 고정 된 크기의 모음이므로 확장 할 수 없기 때문에 오류가 발생합니다.
$array += $element
이전 항목 + 새 항목과 동일한 요소로 새 배열을 작성 하고이 새 큰 배열은 $array
-variable 에서 이전 항목을 대체합니다.
+ = 연산자를 사용하여 배열에 요소를 추가 할 수 있습니다. 이를 사용하면 Windows PowerShell은 실제로 원래 배열의 값과 추가 된 값으로 새 배열을 만듭니다. 예를 들어, 값이 200 인 요소를 $ a 변수의 배열에 추가하려면 다음을 입력하십시오.
$a += 200
출처 : about_Arrays
+=
값 비싼 작업이므로 많은 항목을 추가해야하는 경우 가능한 적은 작업으로 항목을 추가해야합니다. 예 :
$arr = 1..3 #Array
$arr += (4..5) #Combine with another array in a single write-operation
$arr.Count
5
이것이 가능하지 않은 경우 List
또는 보다 효율적인 콜렉션을 사용하는 것이 ArrayList
좋습니다 (다른 답변 참조).
List
나 ArrayList
. 그들은 훨씬 더 빠를 것입니다. 나는 +=
보통 여분의 초가 중요하지 않은 짧은 버리기 스크립트를 생성하기 때문에 개인적으로 시간의 99 %를 사용 하고 배열합니다. 내가 사용하는 시간을 최적화하고 절약하려는 위치에 추가 / 제거가 많은 큰 스크립트의 경우 List
또는 ArrayList
.
Add()
메소드가 존재 하는지 아는 사람 이 있습니까?
IList
. 시도는 Get-Member -InputObject @()
이 표시됩니다Add Method int IList.Add(System.Object value)
동적 크기의 배열을 원한다면 목록을 만들어야합니다. .Add()
@ frode-f에서 설명한 것처럼 기능 을 사용할 수있을뿐만 아니라 동적 배열은 메모리 효율성이 높고 더 나은 방법입니다.
그리고 사용하기 매우 쉽습니다.
배열 선언 대신 다음을 시도하십시오.
$outItems = New-Object System.Collections.Generic.List[System.Object]
항목을 추가하는 것은 간단합니다.
$outItems.Add(1)
$outItems.Add("hi")
그리고 당신이 정말로 배열을 원한다면, 그 기능도 있습니다.
$outItems.ToArray()
Add()
기능을 사용해 보셨습니까 ? List
위에서 언급 한 것처럼 일반 객체 를 만들면 Add()
및 Remove()
메소드를 사용하여 항목을 추가하고 제거 할 수있는 변경 가능한 목록이 있음을 확인할 수 있습니다 .
(New-Object System.Collections.Generic.List[string]).GetType().Name
수율 List`1
; 아마도 메서드를 +=
호출하지 않고 목록을 포함하는 변수에 적용했을 수 있습니다 .Add()
.이 경우 변수 값은 실제로 배열 ( System.Object[]
) 로 변환됩니다 .
$a = new-object collections.generic.list[object]