真或假的方法不起作用

时间:2012-10-24 19:02:40

标签: c# methods

我正在尝试为测试分数设置一个名为hasPassed()的方法,但似乎无法做到。

我得到的错误是:

  

windowsformapplication1.student.HasPassed()'并非所有代码路径都返回值

这是我的代码:

public int YearMark
{
    get { return yearMark; }
    set { yearMark = value; }
}

private bool hasPassed;
public bool HasPassed()
{
    if (yearMark < 40)
    {
        hasPassed = false;
    }
    else
    {
        hasPassed = true;
    }
}

6 个答案:

答案 0 :(得分:4)

您忘记返回bool值 -

public bool HasPassed()
{
   return yearMark >= 40;
}

答案 1 :(得分:4)

你需要返回一个值,试试这个:

public bool HasPassed()
{
    return ( yearMark >= 40 )
}

答案 2 :(得分:2)

显然你是一个老帕斯卡用户?在将值分配给hasPassed之后,您需要实际返回该值。

如果你喜欢你的代码,你应该这样做:

public bool HasPassed()
    {
        if (yearMark < 40)
        {
            hasPassed = false;
        }
        else
        {
            hasPassed = true;
        }
        return hasPassed;

    }

或者通过这种方式,如果你想要它更简单并且乍看之下继续理解它:

public bool HasPassed()
{
    if (yearMark < 40)
    {
        return false;
    }
    return true;       
}

答案 3 :(得分:0)

你的方法有一个bool返回值,所以你需要返回true或false,而不仅仅是设置一个名为hasPassed的字段。将方法更改为返回true或在if

中返回false

答案 4 :(得分:0)

修复程序取决于您的预期设计的工作方式。如果函数HasPassed()应该返回布尔值hasPassed,那么您需要在代码中显式返回它。

public bool HasPassed()
    {
        if (yearMark < 40)
        {
            hasPassed = false;
        }
        else
        {
            hasPassed = true;
        }
        return hasPassed;

    }

但是,如果您希望HasPassed()只更改私有变量hasPassed的值而不实际返回任何内容,则需要将函数的返回类型更改为void

public void HasPassed()
    {
        if (yearMark < 40)
        {
            hasPassed = false;
        }
        else
        {
            hasPassed = true;
        }
    }

答案 5 :(得分:0)

只要您检查调用方法中的hasPassed是什么,就不一定需要返回任何内容。

private bool hasPassed;
public void HasPassed()
{
    if (yearMark < 40)
    {
        hasPassed = false;
    }
    else
    {
        hasPassed = true;
    }
}

public void Main()
{
    HasPassed();
    if (hasPassed)
    {
         //Do something
    }
}

不是我怎么做的,而是另一种解决方案。