2013-11-28 5 views
-1

У меня есть цикл foreach и внутри, если есть else loop, для каждого цикла я проверяю строки текстового файла, сначала я проверяю первую строку «ctf», если не выйти из всего цикла, иначе это «ctf», а затем взять следующую строку в цикле foreach и goto else part, но моя часть еще проверяет первую строку, может ли кто-нибудь сказать, что является реальной проблемой.Перерыв из цикла else if внутри цикла foreach в 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

вопрос уже был дан ответ, но, как правило, если вы должны выйти из цикла, лучше практика использовать Do Хотя цикл вместо Foreach. –

ответ

1

Своп порядок тела «тогда» проверить

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

Ваша проблема в том, что переменная BOOL «первый» не приготовьтесь к ложным, если первая строка не " CTF».

0

Предполагая, что это может быть проблемой корпус рассмотреть следующие изменения от ...

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

к ...

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

Good Luck!

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; 
} 
Смежные вопросы