关于C#中的return关键字

wywzld 2008-12-12 11:01:08
private int index(string name)
{
for (int i = 0; i < stus.Count; i++)
{
if (stus[i].StuName.Equals(name))
{
return 1;
}
}
}
说明:以上代码是一个通过指定姓名name,在名为stus的泛型集合中用for循环查找集合中是否存在这样的一个人。如果存在则返回1。我上面写的东西在编编译的时候报错说:并非所有的代码路径都有返回值。

问题:要想返回我想要的结果,应该怎么改动,希望能详细讲解return的用法。
...全文
361 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyfer 2008-12-13
  • 打赏
  • 举报
回复
你的判断条件决定了你的代码并不是在任何时候都成立的,在不成立的时间并没有return任何东西
以后写代码的时候请尽量考虑你的代码要处理的过程,vs这个提示是很好的,试想一下,某些被我们用来检测一些关键条件的函数在某些时间并不能返回我们想要的东西,那么在程序发布后将会出现多少我们预处理之外的现象。
wb186 2008-12-13
  • 打赏
  • 举报
回复
恩 不错不错 学习
success0725 2008-12-13
  • 打赏
  • 举报
回复
如果你需要用到特定的那个值,就可以将其用return返回,根据需要返回
bshirley 2008-12-13
  • 打赏
  • 举报
回复
请考虑所有的分支情况,如果你写了IF就写一个ELSE也许出现这种情况的可能性会小一点
colincat2004 2008-12-13
  • 打赏
  • 举报
回复
简单来讲,你的return是在某种条件下才返回的,而方法的返回值要求方法无论如何都应该有一个返回值:)
wywzld 2008-12-13
  • 打赏
  • 举报
回复
有道理
vrhero 2008-12-12
  • 打赏
  • 举报
回复
更正一下...
return stus.Contains(name);
vrhero 2008-12-12
  • 打赏
  • 举报
回复
return的问题1楼已经说了...

但这段代码的问题是...泛型集合、数组都提供了一些方法来查找元素,这种循环是没有必要的...而且返回1,0这种古老的方式由于不具有确定的意义也是不推荐的...

如...
return stus.Contains();
猿敲月下码 2008-12-12
  • 打赏
  • 举报
回复
当整个for循环结束后还需要一个return值
quincystar 2008-12-12
  • 打赏
  • 举报
回复
楼上正解. 你的函数要有int型的返回值,但是你的判断逻辑只包含了能找到匹配name的情况,没有考虑找不到匹配name也要有返回值的情况,所以编译通不过.
weiloe 2008-12-12
  • 打赏
  • 举报
回复
同一楼所说的那样
楼外楼 2008-12-12
  • 打赏
  • 举报
回复
方法定义了返回值,那就一定要返回一个,你的是条件返回,所以可以设置默认返回,比如0或-1
愚痴鱼 2008-12-12
  • 打赏
  • 举报
回复
private int index(string name)

方法已经声明为带有int型的返回值,你就要保证无论在何种条件下都要有int型的值被返回;
你只考虑了if(true)的情况,没有考虑if(false)时返回什么值
jt9079 2008-12-12
  • 打赏
  • 举报
回复
同一楼的。。
从BUG中找代码 2008-12-12
  • 打赏
  • 举报
回复
菜鸟的见解:如果不存在这个人的时候,你的代码返回值是什么呢?
blueterry 2008-12-12
  • 打赏
  • 举报
回复
private int index(string name)
{
for (int i = 0; i < stus.Count; i++)
{
if (stus[i].StuName.Equals(name))
{
return 1;
}
}

return 0;
}
因为你没有考虑不能找到的情况,所以说“并非所有路径都有返回值”

111,130

社区成员

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

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

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