@Ras

Откуда берется лишний вывод в консоль при использовании .add для arraylist?

Доброго времени суток.
Почему при выполнении скрипта в консоль дополнительно выводится номер элемента массива?
Скрипт:
$buffer1 = New-Object System.Collections.ArrayList
              
for ($i=0; $i -le 10; $i++)
    {
    $temp="line $i"
    $buffer1.Add("`"$temp`",")   
    Write-Host $buffer1[$i]        
    }


Вывод:
0
"line 0",
1
"line 1",
2
"line 2",
3
"line 3",
4
"line 4",
5
"line 5",
6
"line 6",
7
"line 7",
8
"line 8",
9
"line 9",
10
"line 10",


П.с.: Не могу сформулировать правильно вопрос, чтобы поиском найти.
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
@BeatHazard
Вывод номера массива является особенностью используемого вами ArrayList.
Каждый раз при добавлении $buffer1.Add() он выводит номер строки в массиве куда производилось добавление.
Если эти данные вам не нужны вы можете перенаправить их в $Null например так $buffer1.Add("`"$temp`",") > $Null
В этом случае номера строк выводиться в консоль не будут.
Подробнее можете почитать тут https://learn-powershell.net/2014/09/13/quick-hits...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@azarij
В меру опытный никто
трудно сказать откуда оно берется, но если делать вот так, то номера списка в выводе нет:

$buffer1 = @()

for ($i=0; $i -le 10; $i++)
{
$temp="line $i"
$buffer1 += "`"$temp`","
Write-Host $buffer1[$i]
}

наверно какая-то специфика метода Адд в объекте System.Collections.ArrayList.
Ответ написан
miraage
@miraage
Lead Software Engineer
PowerShell знать не знаю, но одна строчка очень много подозрений вызывает.
Как-то кавычки несимметрично написаны.
$buffer1.Add("`"$temp`",")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы