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
}

catch で現在のラウンドを終了し、次のラウンドを開始したい。どうやってするの。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

continuecatch を終了する直前に現在のラウンドを終了するために使用します... 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 に答える
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 に答える