数组属于引用类型,使用默认的的赋值运算符在两个变量之间赋值只是复制了一个引用,两个变量共享同一份数据。这样的模式有一个弊病如果其中一个改变也会株连到另外一个。所以复制数组最好使用Clone()方法,除非有特殊需求。
PS C:Powershell> $chs=@("A","B","C") PS C:Powershell> $chsBak=$chs PS C:Powershell> $chsBak[1]="H" PS C:Powershell> $chs A H C PS C:Powershell> $chs.Equals($chsBak) True PS C:Powershell> $chsNew=$chs.Clone() PS C:Powershell> $chsNew[1]="Good" PS C:Powershell> $chs.Equals($chsNew) False PS C:Powershell> $chs A H C
本文链接: https://www.pstips.net/powershell-copying-arrays.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
这里执行:
$chsNew=$Chs.clone()
不修改$chsNew值直接比较
$chs.Equals($chsNew)
返回值也是false吧
确实如此 但是这两个数组明明是一样的
元素是一样的,但是数组的引用不一样。
我现在直接用赋值”=”,并不会导致这种问题了