none
关于数组小问题 RRS feed

  • 问题

  • public static bool isPermissions(string permissionsid)
            {
                StringBuilder Permissions = new StringBuilder();
                jm.BLL.UserGroupPermissions bllUserGroupPermissions = new jm.BLL.UserGroupPermissions();
                List<jm.Model.UserGroupPermissions> modelUserGroupPermissionss = new List<jm.Model.UserGroupPermissions>();
                modelUserGroupPermissionss = bllUserGroupPermissions.GetModelList("UserGroupID=" + Int64.Parse(System.Web.HttpContext.Current.Session["UserGroupID"].ToString()) + " and PermissionsFlag=1");
                foreach (jm.Model.UserGroupPermissions modelUserGroupPermissions in modelUserGroupPermissionss)
                {
                    Permissions.Append("" + modelUserGroupPermissions.PermissionsID + ",");
                }
                string Permissionss = Permissions.ToString();
                Permissionss = Permissionss.TrimEnd(',');
                string[] array = Permissionss.Split(new char[] { ',' });
                for (int i = 0; i < array.Length; i++)
                {
                    if (array[i].Equals(permissionsid.ToString()))
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                return true;

            }

    调试后permissionsid的值是2

    array数组为{1,2,3,4,5,6,7}

    但是为什么会执行到return false那一行去的,这个判断哪里错了?

    2010年8月3日 2:54

答案

  •  for (int i = 0; i < array.Length; i++)
          {
            if (array[i].Equals(permissionsid.ToString()))
            {
              return true;  
            }
            else  //第一次判断不应该return false,这样做只判断一次失败就离开了
            {
              //return false;
            }
          }
          return false;  //全部都没找到 才要return false
    

    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我
    2010年8月3日 3:33

全部回复

  • 你把 else 那一段拿掉就不會跑去 return false 那一行了,

    因為你用的是 for 迴圈,他從第一個 element 開始跑,

    也就是 1,

    那當然會 return false 囉!!!

    改成這樣吧~~~

     

    for (int i = 0; i < array.Length; i++)
    {
     if (array[i].Equals(permissionsid.ToString()))
     {
      return true;
     }
    }
    
    return false; //這邊忘記改了,樓下弟兄好樣的
    

     


    小中中的學習筆記
    • 已编辑 DK. Da 2010年8月3日 14:57
    2010年8月3日 3:13
  • 你把 else 那一段拿掉就不會跑去 return false 那一行了,

    因為你用的是 for 迴圈,他從第一個 element 開始跑,

    也就是 1,

    那當然會 return false 囉!!!

    改成這樣吧~~~

     

    for (int i = 0; i < array.Length; i++)
    
    {
    
     if (array[i].Equals(permissionsid.ToString()))
    
     {
    
      return true;
    
     }
    
    }
    
    
    
    return true;
    
    

     


    小中中的學習筆記

    谢谢,但是如果这个数组里面真的不包含permissionsid的值的话我又希望他返回false的啊,如果改成这样不就判断不出来这个数组存不存在这个数了?
    2010年8月3日 3:24
  •  for (int i = 0; i < array.Length; i++)
          {
            if (array[i].Equals(permissionsid.ToString()))
            {
              return true;  
            }
            else  //第一次判断不应该return false,这样做只判断一次失败就离开了
            {
              //return false;
            }
          }
          return false;  //全部都没找到 才要return false
    

    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我
    2010年8月3日 3:33
  •  for (int i = 0; i < array.Length; i++)
    
       {
    
        if (array[i].Equals(permissionsid.ToString()))
    
        {
    
         return true; 
    
        }
    
        else //第一次判断不应该return false,这样做只判断一次失败就离开了
    
        {
    
         //return false;
    
        }
    
       }
    
       return false; //全部都没找到 才要return false
    
    

    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我

    谢谢了
    2010年8月3日 3:45