在以下代码示例中,将原始对象与其存储在数组中的副本进行比较会导致状态不相等。我想了解这种现象为什么它们不相等:
$MyArray=@()
$MyCFG="" | Select-Object -Property ProjName,ProCFG
$MyCFG.ProjName="p1"
$MyCFG.ProCFG="c1"
$MyArray+=$MyCFG.PsObject.Copy()
$MyCFG.ProjName="p2"
$MyCFG.ProCFG="c2"
$MyArray+=$MyCFG.PsObject.Copy()
$MyCFG.ProjName="p3"
$MyCFG.ProCFG="c3"
$MyArray+=$MyCFG.PsObject.Copy()
ForEach($obj in $MyArray)
{
if ($MyCFG -eq $obj)
{Write-Host "Equal"}
else
{Write-Host "Unequal"}
}
最后一个对象值,即 $MyCFG.ProjName="p3" 和 $MyCFG.ProCFG="c3" 应该与 $MyArray 中存储的相同,但它们也会导致 Unequal。
虽然,它可以通过比较其属性值来正确比较,即:
if (($MyCFG.ProjName -eq $obj.ProjName) -and ($MyCFG.ProCFG -eq $obj.ProCFG))
但想知道为什么对象比较结果不相等......