积极答复者
关于数组小问题

问题
-
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那一行去的,这个判断哪里错了?
答案
-
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加我- 已标记为答案 jianming2032 2010年8月3日 3:44
全部回复
-
你把 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的啊,如果改成这样不就判断不出来这个数组存不存在这个数了? -
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加我- 已标记为答案 jianming2032 2010年8月3日 3:44