0

我正在尝试为测试分数设置一个名为 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;
    }
}
4

6 回答 6

4

您忘记返回bool值 -

public bool HasPassed()
{
   return yearMark >= 40;
}
于 2012-10-24T19:04:13.620 回答
4

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

public bool HasPassed()
{
    return ( yearMark >= 40 )
}
于 2012-10-24T19:06:11.577 回答
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;       
}
于 2012-10-24T19:04:01.317 回答
0

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

于 2012-10-24T19:04:54.803 回答
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;
        }
    }
于 2012-10-24T19:09:13.190 回答
0

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

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

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

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

于 2012-10-24T19:09:33.423 回答