C#多个if语句之间的逻辑关系是怎样的,千万不要跟我说什么就近原则?
代码如下publicboolisLogin(stringsUserName,stringsPwd,outUserInfouser){user=newUserInfo();...
代码如下 public bool isLogin(string sUserName, string sPwd, out UserInfo user)
{
user = new UserInfo();
string sSQL = "select * from userinfo where username = '" + sUserName + "'";
DataSet ds = SqlHelper.ExecuteDataset(ConfigurationManager.AppSettings["ConnectionString"], CommandType.Text, sSQL);
if (ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{
string sDBPwd = dt.Rows[0]["Pwd"].ToString().Trim();
if (sPwd == sDBPwd)
{
user.AddTime = DateTime.Parse(dt.Rows[0]["AddTime"].ToString());
user.Pwd = dt.Rows[0]["Pwd"].ToString();
user.RealName = dt.Rows[0]["RealName"].ToString();
user.RoleID = dt.Rows[0]["RoleID"].ToString();
user.UserId = dt.Rows[0]["UserId"].ToString();
user.UserName = dt.Rows[0]["UserName"].ToString();
return true;
}
return false;
}
return false;
}
return false;
}哪位能用中文帮我翻译一下它们之间的逻辑关系? 展开
{
user = new UserInfo();
string sSQL = "select * from userinfo where username = '" + sUserName + "'";
DataSet ds = SqlHelper.ExecuteDataset(ConfigurationManager.AppSettings["ConnectionString"], CommandType.Text, sSQL);
if (ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{
string sDBPwd = dt.Rows[0]["Pwd"].ToString().Trim();
if (sPwd == sDBPwd)
{
user.AddTime = DateTime.Parse(dt.Rows[0]["AddTime"].ToString());
user.Pwd = dt.Rows[0]["Pwd"].ToString();
user.RealName = dt.Rows[0]["RealName"].ToString();
user.RoleID = dt.Rows[0]["RoleID"].ToString();
user.UserId = dt.Rows[0]["UserId"].ToString();
user.UserName = dt.Rows[0]["UserName"].ToString();
return true;
}
return false;
}
return false;
}
return false;
}哪位能用中文帮我翻译一下它们之间的逻辑关系? 展开
5个回答
推荐于2016-06-29
展开全部
// 这个没有就近原则。
if (ds.Tables.Count > 0) 如果数据数大于0 进入此分支
{
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0) 满足数据数大于0了,在判断行数是否大于0,满足进入此分支
{
string sDBPwd = dt.Rows[0]["Pwd"].ToString().Trim();
if (sPwd == sDBPwd) // 行数>0了,此处判断第一行里的密码是否跟参数一样,一样进入此分支
{
user.AddTime = DateTime.Parse(dt.Rows[0]["AddTime"].ToString());
user.Pwd = dt.Rows[0]["Pwd"].ToString();
user.RealName = dt.Rows[0]["RealName"].ToString();
user.RoleID = dt.Rows[0]["RoleID"].ToString();
user.UserId = dt.Rows[0]["UserId"].ToString();
user.UserName = dt.Rows[0]["UserName"].ToString();
return true; // 数据库检索出的密码 跟 参数密码一致,返回true
}
// 跟数据库查询出的密码 跟 参数的密码 不一样则返回false
return false;
}
// 这个是上面判断行是否有数据的分支,如果行里数据<=0 ,执行
return false;
}
// 这个是那个Table里是否有数据,当<=0 时 执行的。
return false;
}
===================
你是看花眼了。给你个简单的,就看清出了。
if (i < 100) 不满足小于100,就不执行if里面的语句,就执行下面的return "i >= 100"
{
if (i < 50) 不满足小于50,就不执行if里面的语句,就执行下面的return "i >= 50"
{
if (i < 20) 不满足小于20,就不执行if里面的语句,就执行下面的return "i >= 20"
{
}
return "i >= 20"
}
return "i >= 50"
}
return "i >= 100"
if (ds.Tables.Count > 0) 如果数据数大于0 进入此分支
{
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0) 满足数据数大于0了,在判断行数是否大于0,满足进入此分支
{
string sDBPwd = dt.Rows[0]["Pwd"].ToString().Trim();
if (sPwd == sDBPwd) // 行数>0了,此处判断第一行里的密码是否跟参数一样,一样进入此分支
{
user.AddTime = DateTime.Parse(dt.Rows[0]["AddTime"].ToString());
user.Pwd = dt.Rows[0]["Pwd"].ToString();
user.RealName = dt.Rows[0]["RealName"].ToString();
user.RoleID = dt.Rows[0]["RoleID"].ToString();
user.UserId = dt.Rows[0]["UserId"].ToString();
user.UserName = dt.Rows[0]["UserName"].ToString();
return true; // 数据库检索出的密码 跟 参数密码一致,返回true
}
// 跟数据库查询出的密码 跟 参数的密码 不一样则返回false
return false;
}
// 这个是上面判断行是否有数据的分支,如果行里数据<=0 ,执行
return false;
}
// 这个是那个Table里是否有数据,当<=0 时 执行的。
return false;
}
===================
你是看花眼了。给你个简单的,就看清出了。
if (i < 100) 不满足小于100,就不执行if里面的语句,就执行下面的return "i >= 100"
{
if (i < 50) 不满足小于50,就不执行if里面的语句,就执行下面的return "i >= 50"
{
if (i < 20) 不满足小于20,就不执行if里面的语句,就执行下面的return "i >= 20"
{
}
return "i >= 20"
}
return "i >= 50"
}
return "i >= 100"
展开全部
就近原则是if和else之间的关系,if和if的关系只可能是顺序上的并列和嵌套.
这段代码里的就属于嵌套.
if (ds.Tables.Count > 0)//如果dataset里有datatable,执行操作,没有就反回false
{
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)//如果Datable里有数据执行操作,没有反回false
{
string sDBPwd = dt.Rows[0]["Pwd"].ToString().Trim();
if (sPwd == sDBPwd)//如果密码正确,将当前登陆User保存,不正确反回false
{
user.AddTime = DateTime.Parse(dt.Rows[0]["AddTime"].ToString());
user.Pwd = dt.Rows[0]["Pwd"].ToString();
user.RealName = dt.Rows[0]["RealName"].ToString();
user.RoleID = dt.Rows[0]["RoleID"].ToString();
user.UserId = dt.Rows[0]["UserId"].ToString();
user.UserName = dt.Rows[0]["UserName"].ToString();
return true;
}
return false;
}
return false;
}
return false;
}
这段代码里的就属于嵌套.
if (ds.Tables.Count > 0)//如果dataset里有datatable,执行操作,没有就反回false
{
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)//如果Datable里有数据执行操作,没有反回false
{
string sDBPwd = dt.Rows[0]["Pwd"].ToString().Trim();
if (sPwd == sDBPwd)//如果密码正确,将当前登陆User保存,不正确反回false
{
user.AddTime = DateTime.Parse(dt.Rows[0]["AddTime"].ToString());
user.Pwd = dt.Rows[0]["Pwd"].ToString();
user.RealName = dt.Rows[0]["RealName"].ToString();
user.RoleID = dt.Rows[0]["RoleID"].ToString();
user.UserId = dt.Rows[0]["UserId"].ToString();
user.UserName = dt.Rows[0]["UserName"].ToString();
return true;
}
return false;
}
return false;
}
return false;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第1个 IF : 如果数据集中的表的数量大于0 就执行
就初始化一张表DT等于上面数据集中的表0
否则
直接跳到最后1个RETURN FALSE
第2个IF(包含在第1个IF中,如果第1个执行不大于0,那么这个IF就会直接跳出,不执行该IF中包含的语句) : 如果DT表中的行数大于0
初始化1个字符串SDBPWD= DT表中第1行的PWD的值
第3个IF(包含在第2个IF中,如果第2个IF,判断不为真,不会到这一步) 如果SPWD与SDBPWD相等,表示密码正确,返回TRUE
关系我说不出来,你这3个IF,就好像箱子里面装箱子吧,第1个箱子不打开,后面的都打不开,任何一个箱子打不开,都会返回FALSE,就是密码验证失败,形容的不是很贴切,你关键看if 下面的两个大括号,{} 他括起来的代码,就是该IF如果判断为真的时候执行的
如果判断不为真,就直接跳到该IF的}下面去了
就初始化一张表DT等于上面数据集中的表0
否则
直接跳到最后1个RETURN FALSE
第2个IF(包含在第1个IF中,如果第1个执行不大于0,那么这个IF就会直接跳出,不执行该IF中包含的语句) : 如果DT表中的行数大于0
初始化1个字符串SDBPWD= DT表中第1行的PWD的值
第3个IF(包含在第2个IF中,如果第2个IF,判断不为真,不会到这一步) 如果SPWD与SDBPWD相等,表示密码正确,返回TRUE
关系我说不出来,你这3个IF,就好像箱子里面装箱子吧,第1个箱子不打开,后面的都打不开,任何一个箱子打不开,都会返回FALSE,就是密码验证失败,形容的不是很贴切,你关键看if 下面的两个大括号,{} 他括起来的代码,就是该IF如果判断为真的时候执行的
如果判断不为真,就直接跳到该IF的}下面去了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if (ds.Tables.Count > 0)//如果ds.Tables.Count 大于0的时候执行下面.否则执行括号以外的.
{
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)//当ds.Tables.Count 大于0且dt.Rows.Count 大于0执行下面,否则执行括号以外的,就是return false;
{
string sDBPwd = dt.Rows[0]["Pwd"].ToString().Trim();
if (sPwd == sDBPwd)//当上面两个条件都符合,且符合当前条件执行下面,否则执行括号以外的,就是return false;
{
user.AddTime = DateTime.Parse(dt.Rows[0]["AddTime"].ToString());
user.Pwd = dt.Rows[0]["Pwd"].ToString();
user.RealName = dt.Rows[0]["RealName"].ToString();
user.RoleID = dt.Rows[0]["RoleID"].ToString();
user.UserId = dt.Rows[0]["UserId"].ToString();
user.UserName = dt.Rows[0]["UserName"].ToString();
return true;//当执行到这里面完毕后,最后返回true .
}
return false;
}
return false;
}
return false;
}
{
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)//当ds.Tables.Count 大于0且dt.Rows.Count 大于0执行下面,否则执行括号以外的,就是return false;
{
string sDBPwd = dt.Rows[0]["Pwd"].ToString().Trim();
if (sPwd == sDBPwd)//当上面两个条件都符合,且符合当前条件执行下面,否则执行括号以外的,就是return false;
{
user.AddTime = DateTime.Parse(dt.Rows[0]["AddTime"].ToString());
user.Pwd = dt.Rows[0]["Pwd"].ToString();
user.RealName = dt.Rows[0]["RealName"].ToString();
user.RoleID = dt.Rows[0]["RoleID"].ToString();
user.UserId = dt.Rows[0]["UserId"].ToString();
user.UserName = dt.Rows[0]["UserName"].ToString();
return true;//当执行到这里面完毕后,最后返回true .
}
return false;
}
return false;
}
return false;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if之内以{}为一个程序块。
if…A…then
{
//一个大括号{} 代表归属,
If…B…then
{
C
//此处结束为B的条件范围
}
//此处结束为止都属于A条件范围
}
if…A…then
{
//一个大括号{} 代表归属,
If…B…then
{
C
//此处结束为B的条件范围
}
//此处结束为止都属于A条件范围
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询