2013-11-28 2 views
-1

내에서 foreach 루프가 있고 내부에 루프가있는 경우 각 루프마다 텍스트 파일의 줄을 확인하고 있습니다. 첫 번째 줄을 확인합니다. "ctf"모든 루프에서 종료하지 않으면 "ctf"입니다. foreach 루프의 다음 줄을 가져 와서 다른 부분으로 이동하지만 다른 부분은 첫 번째 줄을 확인하는 것입니다. 아무도 실제 문제가 무엇인지 말할 수 있습니다.다른 루프에서 foreground 루프 내의 C#

 bool first = true;int i=0; 
     lines = streamReader.ReadToEnd().Split("\r\n".ToCharArray(),   StringSplitOptions.RemoveEmptyEntries); 
     foreach (string line in lines) 
      { 
       if (first) 
       { 
        if (line != "CTF") { break; } // i think the problem is here. 
        first = false; 

       } 
       else 
       { 

        tabs = line.Split('\t'); 
        ID = int.Parse(tabs[0]); 
        X = int.Parse(tabs[1]); 
        Y = int.Parse(tabs[2]); 
        H = int.Parse(tabs[3]); 
        W = int.Parse(tabs[4]); 
        Text = tabs[5]; 
        ItemTypes types = (ItemTypes)int.Parse(tabs[6]); 

         Items.Add(new FormItem()); 
         Items[i].Id = ID; 
         Items[i].X = X; 
         Items[i].Y = Y; 
         Items[i].Height = H; 
         Items[i].Width = W; 
         Items[i].Text = Text; 
         Items[i].Type = types; 
         i++; 


       } 
+0

이후의 질문은 이미 답했지만 당신은 루프의 탈옥해야하는 경우 원칙적으로, 대신의 Foreach 루프하는 동안 할 일을 사용하는 것이 더 좋습니다. –

답변

1

스왑

 if (first) 
      { 
       first = false; 
       if (line != "CTF") { break; } 
      } 

문제를 확인 '만약'의 몸의 순서는 "첫 번째 줄이없는 경우 '첫 번째'는 부울 변수가 false로 설정되지 않는다는 것입니다 CTF "입니다. 행운은 케이싱의 문제에서 다음과 같이 변경을 고려 할 수 있습니다 가정

0

...

if (line != "CTF") { break; } 

에 ...

if (string.Compare(line, "CTF", true)== 0) { break; } 

좋은!

0

쓰기 첫번째 = 거짓 다른

foreach (string line in lines) 

      { 
       if (first) 
       { 
        if (line != "CTF") { break; } // i think the problem is here. 

       } 
       else 
       { 

        tabs = line.Split('\t'); 
        ID = int.Parse(tabs[0]); 
        X = int.Parse(tabs[1]); 
        Y = int.Parse(tabs[2]); 
        H = int.Parse(tabs[3]); 
        W = int.Parse(tabs[4]); 
        Text = tabs[5]; 
        ItemTypes types = (ItemTypes)int.Parse(tabs[6]); 

         Items.Add(new FormItem()); 
         Items[i].Id = ID; 
         Items[i].X = X; 
         Items[i].Y = Y; 
         Items[i].Height = H; 
         Items[i].Width = W; 
         Items[i].Text = Text; 
         Items[i].Type = types; 
         i++; 


       } 
    first = false; 
}