为什么我在下面得到不同的输出取决于我使用的还是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