爲什麼我在下面得到不同的輸出取決於我使用的還是foreach? 用foreach,當你改變每個元素的值時,你不是在改變它的引用嗎?我會認爲做$ row =「d」會使該元素指向「d」,但顯然它不會這樣做,就好像$ row只是一個副本。更改Foreach中的元素對於
[Collections.Generic.List[String]]$list = New-Object '[Collections.Generic.List[String]]'
$list.Add("a")
$list.Add("b")
$list.Add("c")
#foreach ($row in $list)
for ($i = 0; $i -lt $list.Count; $i++)
{
#$row = "d"
$list[$i] = "d"
}
Write-Host $list
<#
Output: with foreach: "a b c"
with for: "d d d"
#>
你是什麼意思?我的代碼中沒有C#,它是純粹的Powershell。 – 2014-10-30 03:00:35
我的錯誤。我看到的所有對'[Collections.Generic.List [String]]的引用都與c#有關。也許我的powershell版本低於你的版本。 – Matt 2014-10-30 03:05:57
@Matt C#只是一種針對.NET框架的語言(如Powershell)。 Collections.Generic.List [String]只是.NET中的一個類,可以在C#中使用(Collections.Generic.List)或Powershell([Collections.Generic.List [String]]) –
2014-10-30 03:53:53