PowerShell复制数组(二)


在之前的例子中我们解释了如何使用”clone”来安全的克隆一个数组,本篇主要会讨论如何拷贝数组的内容到另一个数组。

如果一个数组中的元素是对象(不是原始数据类型,比如数字或者字符串),数组中存储的仍然是这些对象的内存地址,因此克隆只是克隆了数组,数组中元素的引用仍然和原始数组中的元素引用一样,看下面的例子:

$object1 = @{Name='Weltner'; ID=12 }
$object2 = @{Name='Frank'; ID=99 }

$a = $object1, $object2
$b = $a.Clone()
$b[0].Name = 'changed'
$b[0].Name
$a[0].Name

即使我们克隆了数组$a,新的数组$b仍然引用的是同一个对象,元素对象的更改两个数组都会受到影响。只有整个数组的内容的更改是独立的:

$object1 = @{Name='Weltner'; ID=12 }
$object2 = @{Name='Frank'; ID=99 }

$a = $object1, $object2
$b = $a.Clone()
$b[0] = 'deleted'
$b[0]
$a[0]

 

原文链接:Copying Arrays (Part 2)

本文链接: https://www.pstips.net/copying-arrays-part-2.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注