2012-12-18 4 views
-1

왜 내가이 결과를 얻었습니까?foreach를 사용하여 목록 읽기 다른 결과 얻기

코드 :

List<int> samba = new List<int>(new int[] 
      {1,2,0,0,0,0,3,2,1, 
      0,0,0,0,0,0,0,0,0, 
      }); 
    foreach (int i in samba) 
      { 
       label1.Text += samba[i]; 
      } 

결과 :

1201111002111111111 
+3

그 결과를 얻지 못할 이유가 무엇입니까? – Servy

+1

예상되는 결과는 무엇입니까? –

+0

Servy에서 정답을 얻습니다. 나는 그의 대답에 동의 할 때까지 기다려야합니다. –

답변

8

은 아마도 당신은 현재 항목의 인덱스에있는 항목을 인쇄 할 말은하지 않았다 아니라, 오히려 현재 항목 : 루프를 통해 처음으로 당신이 밖으로 인쇄하고

List<int> samba = new List<int>(new int[] 
{1,2,0,0,0,0,3,2,1, 
    0,0,0,0,0,0,0,0,0, 
    }); 
foreach (int i in samba) 
{ 
    label1.Text += i; 
} 

위치가 1 인 항목은 2입니다. 두 번째로 2 위치에있는 항목을 인쇄 할 때, 0입니다. 그런 다음 위치가 0 인 항목을 네 번 인쇄하고 그 결과는 1입니다.

+0

그가 무엇을하고 있는지를 알기 전에 나는 그것을 계속해서 읽어야했다! –

+0

@ 존 B 그래, 같은. – Servy

+0

@Servy 예, 맞습니다.이 수치는 나에게 부끄러운 일입니다. 도와 주셔서 감사합니다. –

3

당신은 아마 원하는 무엇 :

label1.Text = string.Join("", samba); 
label1.Text += string.Join("", samba); // if the leading 1 is correct 

당신이 무슨 일을하는지 :

 

for every value n in samba 
    append the value represented at index=n in samba 

비록 내가 당신의 코드를 실행할 때 201111002111111111을 얻는다는 것을 알 수는 없지만,이 코드가 실행되기 전에 label1.Text에 있다고 추측하고 있습니다.

+0

이것은 그가 이미 가지고있는 것입니다. 좀 더 장황한 방법으로. –

+0

@ DanielBrückner : 아니요. 그는'foreach'와'for'을 혼합합니다. –

+0

@AustinSalonen 죄송합니다, 그가 색인 생성을 사용했는지 알지 못했습니다. +1 +1 –

관련 문제