for 또는 foreach 사용 여부에 따라 아래 출력이 달라지는 이유는 무엇입니까? foreach를 사용하면 각 요소의 값을 변경할 때 참조를 변경하지 않습니까? $ row = "d"를 쓰면 그 요소가 "d"가 될 것이라고 생각했을 것입니다.하지만 분명히 그렇게하지는 않습니다. 마치 $ row가 복사 일뿐입니다. 복사되는 루프 내부 요소 foreach
(및 ForEach-Object
) 결과를 이용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입니다. –
내 실수. '[Collections.Generic.List [String]]'에 대한 모든 언급은 C#과 관련이 있습니다. 아마 내 파워 쉘 버전이 너보다 낮을 수도있다. – Matt
@Matt C#은 Powershell과 같은 언어 일 뿐이며 .NET Framework를 대상으로합니다. Collections.Generic.List [문자열] 당신이 C#에서 사용할 수있는 .NET에서 단지 클래스 (Collections.Generic.List) 또는 PowerShell은 ([Collections.Generic.List는 [문자열]]) –