文字列配列の扱いはシンプル。基本は②で作成し、慣れてきたら③④を使い分けると良い。②も悪くは無いが、配列が1000行以上になると指数関数的に処理が遅くなるので③④に置き換える必要が出てきます。(①はソースが見にくくなるので推奨しない…)
速度の問題から「System.Text.StringBuilder」を使うような例をよく見るが、文字列配列だけで無く、文字列の組み立てにまで対応していて、Powershellのシンプルな文字列配列の考え方とズレているので使いにくい。(改行を意識する必要がある…)
どれか1つしか使わない縛りをかけるなら、汎用性が一番高い④しかない。
## 利点: 1行で記述できる、定数なら良い ## 欠点: 追加が出来ない、見づらい(要素数が分かりにくい) $Array = @('1行目:a','2行目:bb','3行目:ccc') ## 要素数(行数) $Array.Length ## 表示(全て同じ内容) $Array $Array[0..2] $Array[0..($Array.Length -1)] # 文字列配列② ## 利点: 見やすい、追加が容易 ## 欠点: 加算代入の行数が多くなると、目に見えて遅くなる(多くても100行程度までに) $Array = @() $Array += '1行目:a' $Array += '2行目:bb' $Array += '3行目:ccc' ## 要素数(行数) $Array.Length ## 表示(全て同じ内容) $Array $Array[0..2] $Array[0..($Array.Length -1)] # 文字列配列③ ## 利点: 追加が容易、型チェックができる ## 欠点: 速い。遅くならない。 $Array = New-Object System.Collections.Generic.List[string] $Array.Add( '1行目:a' ) $Array.Add( '2行目:bb' ) $Array.Add( '3行目:ccc' ) ## 要素数(行数) $Array.ToArray().Length ## 表示(全て同じ内容) $Array $Array[0..2] $Array.ToArray() $Array[0..($Array.ToArray().Length -1)] ## 型を文字列配列に変える $StringArray = $Array.ToArray() $StringArray.Length $StringArray # 文字列配列④ ## 利点: 追加が容易、汎用性が高い ## 欠点: 速い。遅くならない。 $Array = New-Object System.Collections.ArrayList ## 表示 $Array.Add( '1行目:a' ) $Array.AddRange( @('2行目:bb','3行目:ccc') ) ## 要素数(行数) $Array.ToArray().Length ## 表示(全て同じ内容) $Array $Array[0..2] $Array.ToArray() $Array[0..($Array.ToArray().Length -1)] ## 型を文字列配列に変える $StringArray = $Array.ToArray() $StringArray.Length $StringArray
0 件のコメント:
コメントを投稿