来自这个帖子的后续。
问题
有序哈希表无法被克隆。
问题
有没有一种“简单”的方法来做到这一点?我确实找到了一些看起来对于这样一个“简单”任务来说过于复杂的示例。
MWE
$a = [ordered]@{}
$b = $a.Clone()
输出
方法调用失败,因为[System.Collections.Specialized.OrderedDictionary]不包含名为'Clone'的方法。
来自这个帖子的后续。
有序哈希表无法被克隆。
有没有一种“简单”的方法来做到这一点?我确实找到了一些看起来对于这样一个“简单”任务来说过于复杂的示例。
$a = [ordered]@{}
$b = $a.Clone()
方法调用失败,因为[System.Collections.Specialized.OrderedDictionary]不包含名为'Clone'的方法。
尽管Paweł Dyl提供的答案复制了有序哈希,但它并不是深克隆。
要实现深度克隆,您需要执行以下操作:
# 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()
$b=([hashtable]$a).Clone()