有这么一个语句如下,有两个嵌套的循环,continue是跳出本次循环,break是跳出最近的嵌套循环,现在我想在满足条件的时候跳出所有的嵌套循环,即不执行任何循环,用什么语句好呢?for (int i = 0; i < datagridview.Rows.Count; i++)
                {
                    for (int j = 0; j < datagridview.Columns.Count; j++)
                    {
                        if (datagridview.Columns[j].Visible == true && !System.Convert.IsDBNull(datagridview[j, i].Value))
                        {
                            string cellcontain = System.Convert.ToString(datagridview[j, i].Value).ToUpper();
                            int index = cellcontain.IndexOf(condition.ToUpper(), 0);
                            if (index >= 0)
                            {
                                datagridview.CurrentCell = datagridview[j, i];
                                iscontinue = false;
                                break;
                            }
                        }
                        else
                            continue;
                    }
                }

解决方案 »

  1.   

    public void function(DataGridView datagridview)
    {
    for (int i = 0; i < datagridview.Rows.Count; i++) 
                    { 
                        for (int j = 0; j < datagridview.Columns.Count; j++) 
                        { 
                            if (datagridview.Columns[j].Visible == true && !System.Convert.IsDBNull(datagridview[j, i].Value)) 
                            { 
                                string cellcontain = System.Convert.ToString(datagridview[j, i].Value).ToUpper(); 
                                int index = cellcontain.IndexOf(condition.ToUpper(), 0); 
                                if (index >= 0) 
                                { 
                                    datagridview.CurrentCell = datagridview[j, i]; 
                                    iscontinue = false; 
                                    break; 
                                } 
                            } 
                            else 
                                return
                        } 
                    }}
    作一个方法
    用return就可以了。
      

  2.   


    或者...GOTO到你想到继续的地方...
      

  3.   

    用goto,虽然不提倡,但只要合理运用,而不是滥用,依然是个很好用的东东。
      

  4.   

    应该设置一个flag,在需要跳出的循环判断一下这个flag是否为true。当需要设置的时候把这个flag设置成false就可以了。例如:bool flag = true;
    for (int i = 0; i < datagridview.Rows.Count&&flag ; i++) 
                    { 
                        for (int j = 0; j < datagridview.Columns.Count&&flag ; j++) 
                        { 
                            if (datagridview.Columns[j].Visible == true && !System.Convert.IsDBNull(datagridview[j, i].Value)) 
                            { 
                                string cellcontain = System.Convert.ToString(datagridview[j, i].Value).ToUpper(); 
                                int index = cellcontain.IndexOf(condition.ToUpper(), 0); 
                                if (index >= 0) 
                                { 
                                    datagridview.CurrentCell = datagridview[j, i]; 
                                    iscontinue = false; 
                                   flag  = false;
                                } 
                            } 
                            else 
                                continue; 
                        } 
                    }
      

  5.   

    因为break一次只能跳出一层循环,所以如果想从多层嵌套中迅速跳出有以下方法:1、goto语句while(condition1){  while(condition2)  {    while(condition3)      if(some disaster)        goto quit;  }}quit:    ;2、设置一个状态标志:enum {EXIT ,OK}status;...status = OK;while(status == OK && condition1){  while(status == OK && condition2)     {    while(status == OK && condition3)      if(some disaster)      {        status  = EXIT;        break;      }  }}3、单独设置一个函数,if disaster的时候,就用return语句离开这个函数。
    来自http://www.cnblogs.com/dusts/archive/2011/07/12/2103940.html