我正在尝试为测试分数设置一个名为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;
}
}
答案 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
}
}
不是我怎么做的,而是另一种解决方案。