Powershell class, インスタンス, List 不思議な挙動
Aというクラスがあるとして
class A { [string]$s1 }
.Net のList型を用意
using namespace System.Collections.Generic $alist = New-Object List[A]
状態を見ると、List型にはAddというメソッドがあり、 A型を1つ入れられることが分かる。
$alist.GetType()
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True List`1 System.Object
$alist.Add
OverloadDefinitions ------------------- void Add(A item) void ICollection[A].Add(A item) int IList.Add(System.Object value)
1つ入れてみる
$alist.Add( [A]::new())
型はもちろんそのまま
$alist.GetType()
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True List`1 System.Object
個数は当然 1
$alist.Count
1
ここから本題。
powershellの配列には +=演算子(要素追加) がある。それを使ってみる。
$alist += New-Object A
$alist.GetType()
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array
形がObject[]に変わってしまった!しかし個数は正しいw
$alist.Count
2
List型にはその演算子はありません!って言ってほしい。