1
foreach (String host   in hostArray)
{
    string s1 = hostArray[t];
    string s2 = branchArray[t];
    string con_msg;
    t=t+1;
    TcpClient socketForServer;
    try
    {
        socketForServer = new TcpClient(s1, 10);
        con_msg="Connected";
    }
    catch
    {
        ListViewItem item = new ListViewItem();
        item.BackColor = Color.LightGreen;
        item.Text = (s2);
        item.SubItems.Add(s1);
        item.SubItems.Add("Not found");
        listView1.Items.Add(item);
        con_msg = "Not connected";
        // I want to exit this round in here and and start next round  how to do it 
    }

    NetworkStream networkStream = socketForServer.GetStream();
    System.IO.StreamReader streamReader =  new System.IO.StreamReader(networkStream);
    System.IO.StreamWriter streamWriter =new System.IO.StreamWriter(networkStream);
    //code
}

我想退出当前回合并开始下一轮。怎么做。我不想退出 foreach 循环,我只想退出当前回合并开始下一轮

4

4 回答 4

3

用来continue做那件事。查看文档

于 2012-10-22T06:00:59.343 回答
2

continue语句将控制权传递给它出现的封闭迭代语句的下一次迭代。

以下是代码中continue语句的样子:

foreach (String host   in hostArray)
{
    string s1 = hostArray[t];
    string s2 = branchArray[t];
    string con_msg;
    t=t+1;
    TcpClient socketForServer;
    try
    {
        socketForServer = new TcpClient(s1, 10);
        con_msg="Connected";
    }
    catch
    {
        ListViewItem item = new ListViewItem();
        item.BackColor = Color.LightGreen;
        item.Text = (s2);
        item.SubItems.Add(s1);
        item.SubItems.Add("Not found");
        listView1.Items.Add(item);
        con_msg = "Not connected";

        continue;
    }

    NetworkStream networkStream = socketForServer.GetStream();
    System.IO.StreamReader streamReader =  new System.IO.StreamReader(networkStream);
    System.IO.StreamWriter streamWriter =new System.IO.StreamWriter(networkStream);
    //code
}

goto语句将程序控制直接传递给带标签的语句。

以下是代码中goto语句的样子:

foreach (String host   in hostArray)
{
    string s1 = hostArray[t];
    string s2 = branchArray[t];
    string con_msg;
    t=t+1;
    TcpClient socketForServer;
    try
    {
        socketForServer = new TcpClient(s1, 10);
        con_msg="Connected";
    }
    catch
    {
        ListViewItem item = new ListViewItem();
        item.BackColor = Color.LightGreen;
        item.Text = (s2);
        item.SubItems.Add(s1);
        item.SubItems.Add("Not found");
        listView1.Items.Add(item);
        con_msg = "Not connected";

        goto ErrorOccured;
    }

    NetworkStream networkStream = socketForServer.GetStream();
    System.IO.StreamReader streamReader =  new System.IO.StreamReader(networkStream);
    System.IO.StreamWriter streamWriter =new System.IO.StreamWriter(networkStream);
    //code

    ErrorOccured:
    Console.WriteLine("Do something else...");
}
于 2012-10-22T06:06:53.693 回答
2
foreach (var item in Items)
{           
  try
  {
    //Exception
  }
  catch (Exception)
  {
    continue;//Will move to next item of "Items" of FOREACH LOOP
  }

  int a = 1 + 1;//If exception gets this line will not execute
 }
于 2012-10-22T06:14:14.560 回答
2

用于continue在完成 catch 之前退出当前回合... 通过使用continuecatch 中的语句,应跳过 continue 和 foreach 主体结尾之间的语句。举个例子……就像HABJAN给的……

    foreach (String host   in hostArray){

        string s1 = hostArray[t];
        string s2 = branchArray[t];
        string con_msg;
        t=t+1;
        TcpClient socketForServer;

       try{
           socketForServer = new TcpClient(s1, 10);
           con_msg="Connected";
       }
       catch{
           ListViewItem item = new ListViewItem();
           item.BackColor = Color.LightGreen;
           item.Text = (s2);
           item.SubItems.Add(s1);
           item.SubItems.Add("Not found");
           listView1.Items.Add(item);
           con_msg = "Not connected";

           continue;
       }

       NetworkStream networkStream = socketForServer.GetStream();
       System.IO.StreamReader streamReader =  new System.IO.StreamReader(networkStream);
       System.IO.StreamWriter streamWriter =new System.IO.StreamWriter(networkStream);
       // code
   }
于 2012-10-22T06:25:35.713 回答