for循环 返回值问题

ayiosi 2009-12-24 09:34:04

代码如下:
------------------------------------------------------
public bool IsAdmin(int emp_id)
{
DataSet ds = dal.GetList("emp_id=" +emp_id);
DataTable dt=ds.Tables[0];
int count =dt.Rows.Count;
int[] role = new int[count];
for (int i = 0; i < count; i++)
{
if (dt.Rows[i]["role_id"].ToString() != "")
{
role[i] = Convert.ToInt32(dt.Rows[i]["role_id"].ToString());
if (role[i] == 4)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
----------------------
为什么报“并非所有路径都有返回值”

...全文
1266 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼 2009-12-30
  • 打赏
  • 举报
回复
心寒呀

那么多给楼主讲原理的没给分,而提供代码的就给了满分.

看样子,楼主是个喜欢别人都替你做好,自己的不用动脑子的人
ytc666 2009-12-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 ayiosi 的回复:]
C# code
代码如下:------------------------------------------------------publicbool IsAdmin(int emp_id)
{
DataSet ds= dal.GetList("emp_id="+emp_id);
DataTable dt=ds.Tables[0];int count=dt.Rows.Count;int[] role=newint[count];for (int i=0; i< count; i++)
{if (dt.Rows[i]["role_id"].ToString()!="")
{
role[i]= Convert.ToInt32(dt.Rows[i]["role_id"].ToString());if (role[i]==4)
{returntrue;
}else
{returnfalse;
}
}else
{returnfalse;
}
}
}----------------------
为什么报“并非所有路径都有返回值”
[/Quote]

因为如果不进入for循环,就没有返回值
在for循环外加返回值即可
erydemimi 2009-12-25
  • 打赏
  • 举报
回复
如果不循环一次 那返回什么???
ymkyniyq 2009-12-25
  • 打赏
  • 举报
回复
看你们的贴子有点像是在说自己几厉害一样的
不就是程序在生成的时候if else里的返回值都是有可能不返回的 因为它是分支语句有可能不执行 则会有可能没有返回值
不就这么简单
都不知道扯到那里去咯
  • 打赏
  • 举报
回复
在外面套一个if不就解决问题了?
没执行直接返回false
walkingmu 2009-12-25
  • 打赏
  • 举报
回复
这个是软件工程结构化的问题。
建议楼主在for的上面定义一个要返回的变量
for循环中只是改变变量的值
for循环结束后返回这个变量
坎离枫 2009-12-25
  • 打赏
  • 举报
回复
建议在for(){...}后加一个return:如果for未执行不就没返回值了?
另:
检查你的程序里的其它地方,看是否在其它地方调用了这个函数,但参数不正确。我以前就遇到过。
antony1029 2009-12-25
  • 打赏
  • 举报
回复
一般 定义变量。最后return。
蒙戈 2009-12-25
  • 打赏
  • 举报
回复
更正下,是每一种可能都Return了
蒙戈 2009-12-25
  • 打赏
  • 举报
回复
首先你要对你的count判断是否大于0
然后你的代码逻辑上是有错误的,请仔细看下你的代码,那个FOR循环不管怎么样都会只执行一次,因为你FOR循环中第一种可能结果都是return了
最后说句实在话,看了楼主的代码想不通是用来做什么的。。。。。
飘渺幽冥 2009-12-25
  • 打赏
  • 举报
回复
for循环也有条件判断,也有不执行的可能所以在for循环外也要有return
最好有个bool的变量在方法的最后返回
yudi010 2009-12-25
  • 打赏
  • 举报
回复
罗锅
lhz_dxm 2009-12-25
  • 打赏
  • 举报
回复
public bool IsAdmin(int emp_id)
{
DataSet ds = dal.GetList("emp_id=" +emp_id);
DataTable dt=ds.Tables[0];
int count =dt.Rows.Count;
int[] role = new int[count];
for (int i = 0; i < count; i++)
{
if (dt.Rows[i]["role_id"].ToString() != "")
{
role[i] = Convert.ToInt32(dt.Rows[i]["role_id"].ToString());
if (role[i] == 4)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
return false;

}
wclhack 2009-12-25
  • 打赏
  • 举报
回复

C# code代码如下:
------------------------------------------------------
public bool IsAdmin(int emp_id)
{
DataSet ds = dal.GetList("emp_id=" +emp_id);
DataTable dt=ds.Tables[0];
int count =dt.Rows.Count;
bool retvalue=false;
int[] role = new int[count];
for (int i = 0; i < count; i++)
{
if (dt.Rows[i]["role_id"].ToString() != "")
{
role[i] = Convert.ToInt32(dt.Rows[i]["role_id"].ToString());
if (role[i] == 4)
{
retvalue=true;
}
}
}
return retvalue;
}
卧_槽 2009-12-25
  • 打赏
  • 举报
回复
你的代码count==0的时候,没有返回值
xray2005 2009-12-25
  • 打赏
  • 举报
回复
你这代码太不简洁了。

给你简洁点的:


public bool IsAdmin(int emp_id)
{
DataSet ds = dal.GetList("emp_id=" +emp_id);
DataTable dt=ds.Tables[0];
int count =dt.Rows.Count;
int[] role = new int[count];
for (int i = 0; i < count; i++)
{
if (dt.Rows[i]["role_id"].ToString() != "")
{
role[i] = Convert.ToInt32(dt.Rows[i]["role_id"].ToString());
if (role[i] == 4)
{
return true;
}
}
}
return false;

}

dafei198607 2009-12-25
  • 打赏
  • 举报
回复
for外面加个return ,
  • 打赏
  • 举报
回复
方法最后是要返回一个Bool值的,而你却只在for循环中返回了,属于局部的,所以报错....
sh_lin 2009-12-25
  • 打赏
  • 举报
回复
看完所有贴 该说的大虾们都说 这种东西多写写就知道
denbes 2009-12-25
  • 打赏
  • 举报
回复
加载更多回复(40)

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧