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的用法。

解决方案 »

  1.   

    private int index(string name)
            {
                for (int i = 0; i < stus.Count; i++)
                {
                    if (stus[i].StuName.Equals(name))
                    {
                        return 1;
                    }
                }            return 0;
            } 
    因为你没有考虑不能找到的情况,所以说“并非所有路径都有返回值”
      

  2.   

    private int index(string name) 方法已经声明为带有int型的返回值,你就要保证无论在何种条件下都要有int型的值被返回;
    你只考虑了if(true)的情况,没有考虑if(false)时返回什么值
      

  3.   

    楼上正解. 你的函数要有int型的返回值,但是你的判断逻辑只包含了能找到匹配name的情况,没有考虑找不到匹配name也要有返回值的情况,所以编译通不过.
      

  4.   

    当整个for循环结束后还需要一个return值 
      

  5.   

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

  6.   

    更正一下...
    return stus.Contains(name);
      

  7.   

    简单来讲,你的return是在某种条件下才返回的,而方法的返回值要求方法无论如何都应该有一个返回值:)
      

  8.   

    请考虑所有的分支情况,如果你写了IF就写一个ELSE也许出现这种情况的可能性会小一点
      

  9.   

    如果你需要用到特定的那个值,就可以将其用return返回,根据需要返回
      

  10.   

    你的判断条件决定了你的代码并不是在任何时候都成立的,在不成立的时间并没有return任何东西
    以后写代码的时候请尽量考虑你的代码要处理的过程,vs这个提示是很好的,试想一下,某些被我们用来检测一些关键条件的函数在某些时间并不能返回我们想要的东西,那么在程序发布后将会出现多少我们预处理之外的现象。