17

私はこれに気づき、苦労して学んだので、共有したいと思います。次の文字列のリストがあるとします。

>$list = New-Object -TypeName System.Collections.Generic.List[string]
>$list.Add("x")
>$list.Add("yy")
>$list.Add("zzz")
>$list
x
yy
zzz

リスト内の項目数を取得したい場合は、.Count プロパティにアクセスすると、予想どおり "3" が得られます。

>$list.Count
3

ただし、.Count の代わりに .Length にアクセスして間違いを犯すことがあります。Python や C# などの他の言語では、このプロパティが使用できないというエラーが表示されます。しかし、PowerShell では、そのオブジェクトで見つからない場合、含まれているオブジェクトを反復処理し、それらのプロパティにアクセスすることがわかります。つまり、長さのリストができあがります! サプライズ!!

>$list.Length
1
2
3

メソッドを呼び出すこともできます!

>$list.ToUpper()
X
YY
ZZZ

私が試したように、この「機能」は System.Collections.ArrayList でも機能することに注意してください。ただし、PowerShell の組み込みの配列型では機能しません。

この「機能」は何と呼ばれますか? そして、なぜそのように設計されているのですか?これは非常に驚くべきことであり、エラーが発生しやすいものです。

4

1 に答える 1