我在函数中有一个StringBuilder对象。在返回之前有一些字符串类型,以及之后的一些System.Object。
function test
{
$strArr = @("aaa", "bbb", "ccc")
$stringBuilder = New-Object System.Text.StringBuilder
foreach ($item in $strArr)
{
$stringBuilder.AppendLine($item)
}
$out = $stringBuilder.ToString()
write-host "FIRST OUT: ", $out, "OUTTYPE:", $out.GetType()
return $out
}
$out2 = test
Write-Host "-------------------"
write-host "SECOND OUT2: ", $out2, "OUT2TYPE:", $out2.GetType()
输出:
FIRST OUT: aaa
bbb
ccc
OUTTYPE: System.String -> THAT'S OK
-------------------
SECOND OUT2 (ALL ARE four times - WHY???): aaa
bbb
ccc
aaa
bbb
ccc
aaa
bbb
ccc
aaa
bbb
ccc
OUT2TYPE: System.Object[] -> Object?????
为什么所有时间都是四倍数?为什么对象不是字符串?
AppendLine()
函数返回一个对 StringBuilder 本身的引用,如果您检查$out2[0].GetType()
,您会发现它是StringBuilder
类型。 - Mathias R. Jessen