$b = (2,3) $myarray1 = @(,$b,$b) $myarray1[0].length #this will be 1 $myarray1[1].length $myarray2 = @( ,$b ,$b ) $myarray2[0].length #this will be 2 $myarray[1].length $myarray3 = @(,$b ,$b ) $myarray3[0].length #this will be 2 $myarray3[1].length
ОБНОВЛЕНИЕ
Я думаю, что на #powershell IRC мы с этим справились. Вот еще один пример, демонстрирующий опасность разрыва запятой в следующей строке, а не в верхней строке при перечислении нескольких элементов. в массиве из нескольких строк.
$b = (1..20) $a = @( $b, $b ,$b, $b, $b ,$b) for($i=0;$i -lt $a.length;$i++) { $a[$i].length } "--------" $a = @( $b, $b ,$b ,$b, $b ,$b) for($i=0;$i -lt $a.length;$i++) { $a[$i].length }
производит
20 20 20 20 20 20 -------- 20 20 20 1 20 20
На самом деле, скорее, использование вложенных массивов, которые могут усложнить это здесь, представляет собой простой массив целых чисел
$c = @( 1 , 2 , 3 , 4 ) for($i=0;$i -lt $c.length;$i++) { $c[$i].gettype() } "---------" $c = @( 1 , 2 , 3 , 4 ) for($i=0;$i -lt $c.length;$i++) { $c[$i].gettype() }
и результаты
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Int32 System.ValueType True True Int32 System.ValueType True True Int32 System.ValueType True True Int32 System.ValueType --------- True True Int32 System.ValueType True True Int32 System.ValueType True True Object[] System.Array True True Int32 System.ValueType
. Мне любопытно, как люди объяснят это . Думаю, теперь я понимаю это, но мне трудно объяснить это кратко и понятно, хотя приведенный выше пример в некоторой степени способствует достижению этой цели.