来自this thread的后续行动。
无法克隆有序哈希表。
是否有捷径可寻?我确实发现了一些对于这种“简单”任务看起来过于复杂的例子。
$a = [ordered]@{}
$b = $a.Clone()
Method invocation failed because [System.Collections.Specialized.OrderedDictionary] does not contain a method named 'Clone'.
OrderedDictionary不包含Clone方法(另见ICloneable接口)。你必须手动完成:
$ordered = [ordered]@{a=1;b=2;c=3;d=4}
$ordered2 = [ordered]@{}
foreach ($pair in $ordered.GetEnumerator()) { $ordered2[$pair.Key] = $pair.Value }
虽然PawełDyl给出的答案确实克隆了有序哈希,但它不是Deep-Clone。
为此,您需要这样做:
# create a deep-clone of an object
$ms = New-Object System.IO.MemoryStream
$bf = New-Object System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
$bf.Serialize($ms, $ordered)
$ms.Position = 0
$clone = $bf.Deserialize($ms)
$ms.Close()