Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Neldoreth_inf:
Собственно вопрос почему не работает конструкция ниже?
Ошибка Index was outside the bounds of the array. »
А у меня — другая:
Цитата:
Cannot index into a null array.
в:
Код: Выделить весь код
$list1[1] = $a
Ошибка же:
Цитата Neldoreth_inf:
Index was outside the bounds of the array. »
проявляется тогда, когда Вы пытаетесь обратиться к несуществующим по указанному индексу элементам. В Вашем случае — Вы явно обращаетесь к элементу за пределами массива.

Цитата Neldoreth_inf:
Как можно создать массив, записывая каждый его элемент в цикле? »
Например, так (разумеется, не единственный способ):
Код: Выделить весь код
$aArray = @()

for($i = 0; $i -lt 20; $i++) {
    $aArray += $i * 2
}

$aArray.GetLowerBound(0), $aArray.GetUpperBound(0)
''
$aArray
Обратите внимание, что индекс первого элемента массива — 0 (причём — всегда 0), последнего элемента — 19 (но не 1 и 20 соответственно).

Или же, с явной декларацией массива и столь любезным Вам способом присваивания по индексу элемента:
Код: Выделить весь код
$aArray = New-Object -Type System.Int32[] 20

for($i = $aArray.GetLowerBound(0); $i -le $aArray.GetUpperBound(0); $i++) {
    $aArray[$i] = $i * 2
}

$aArray.GetLowerBound(0), $aArray.GetUpperBound(0)
''
$aArray
Есть и такие способы создания массива искомого размера:
Код: Выделить весь код
$aArray = @(0) * 20
$aArray = ,0 * 20
и т.п.

Чтоб Вам стало понятнее (Вы явно переходите с какого-то другого языка), почитайте вот это: Learn Simple Ways to Handle Windows PowerShell Arrays – Hey, Scripting Guy! Blog.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:57, 24-02-2017 | #2