大家好,我有如下问题要请教:已知  
 
loginid='AJK'  
foreach(char  s  in  loginid)  
{  
     switch(s)  
     {  
           case  'A':                                                                          
           break;  
           case  'I':                                                                          
               break;  
           default:    
                 this.Response.Redirect("Slimit.aspx");              
                 break;  
     }  
}  
 
只要longid的值有一个是A的话,就跳出循环,为什么我的程序总是执行Redirect("Slimit.aspx");   
单步跟踪 S值,分别为:64:A        74:J     .........为什么 loginid='AJK' ,却多出了数字

解决方案 »

  1.   

    break只是跳出switch,而没有跳出foreach的
    建议修改成:
    loginid='AJK'
    if(loginid.IndexOf('A') <=0)
       this.Response.Redirect("Slimit.aspx");
    else
       // 只要longid的值有一个是A的话,就跳出循环,
      

  2.   

    数字是对应字母的asc II 码.
      

  3.   

    loginid="AJK" 
    if(loginid.IndexOf('A') < 0)
       this.Response.Redirect("Slimit.aspx");
    else
       // 跳出循环
      

  4.   

    bool endLoop=false;
    switch(s)  
         {  
               case  'A':        
               endLoop=true;                                                                  
               break;  
               case  'I':                                                                          
                   break;  
               default:    
                     this.Response.Redirect("Slimit.aspx");              
                     break;  
         }  if(endLoop)
    break; //跳出循环
      

  5.   

    default:    
        this.Response.Redirect("Slimit.aspx");  
    这句话是说,如果在case没有找到匹配的项,他就会执行这一项
      

  6.   

    zhaoliang_chen提醒对的,应该注意<0 string loginid="AJK";
    Label1.Text=loginid.IndexOf("A").ToString();   
    if(loginid.IndexOf('A') <0)
    Label1.Text="没有A";
    else Label1.Text="有A";