各エントリがそれ自身(文字列の)リストであるリストがあります。powershellリストのリスト:エントリの初期化は値ではなくアドレスで行われる
しかし、リストをリストのリストに割り当てると、割り当ては値ではなく参照によって実行されるようです。つまり、基本となるリストが変更された場合、「リストのリスト」も変更されます。
以下のコードは、問題を示しています
$work=New-Object "System.Collections.Generic.List[String]"
$group=New-Object "System.Collections.Generic.List[System.Collections.Generic.List[String]]"
$work.Add("One")
$work.Add("Two")
$group.Add($work)
write-host "-->First Add"
foreach ($g in $group) {
write-host "--Entry"
foreach ($ge in $g) {
write-host $ge
}
}
$work.Clear()
$work.Add("OneOne")
$work.Add("TwoTwo")
$group.Add($work)
write-host "-->Second Add"
foreach ($g in $group) {
write-host "--Entry"
foreach ($ge in $g) {
write-host $ge
}
}
私はこの出力を得る:
-->First Add
--Entry
One
Two
-->Second Add
--Entry
OneOne
TwoTwo
--Entry
OneOne
TwoTwo
私はこの期待している:このクエリが混ざっているようだ場合
-->First Add
--Entry
One
Two
-->Second Add
--Entry
One
Two
--Entry
OneOne
TwoTwo
謝罪を私はこの問題を説明することが難しいと思う。
どうすればこの問題を解決できますか?