C# 正确或错误的方法不起作用
我试图为测试分数设置一个名为haspass()的方法,但似乎无法实现 我得到的错误是: windowsformapplication1.student.HasPassed()'并非所有代码路径都返回值 这是我的代码:C# 正确或错误的方法不起作用,c#,methods,C#,Methods,我试图为测试分数设置一个名为haspass()的方法,但似乎无法实现 我得到的错误是: windowsformapplication1.student.HasPassed()'并非所有代码路径都返回值 这是我的代码: public int YearMark { get { return yearMark; } set { yearMark = value; } } private bool hasPassed; public bool HasPassed() { if
public int YearMark
{
get { return yearMark; }
set { yearMark = value; }
}
private bool hasPassed;
public bool HasPassed()
{
if (yearMark < 40)
{
hasPassed = false;
}
else
{
hasPassed = true;
}
}
public int YearMark
{
获取{return yearMark;}
设置{yearMark=value;}
}
一等兵已经过去了;
公共广播已通过
{
如果(年号<40)
{
hasspassed=假;
}
其他的
{
hasspassed=true;
}
}
显然你是老帕斯卡用户?在将值赋给haspass之后,您需要实际返回该值
如果你喜欢你的代码,你应该这样做:
public bool HasPassed()
{
if (yearMark < 40)
{
hasPassed = false;
}
else
{
hasPassed = true;
}
return hasPassed;
}
public bool haspass()
{
如果(年号<40)
{
hasspassed=假;
}
其他的
{
hasspassed=true;
}
回归已经过去;
}
或者,如果您希望它更简单,并且第一眼就能理解它,也可以这样做:
public bool HasPassed()
{
if (yearMark < 40)
{
return false;
}
return true;
}
public bool haspass()
{
如果(年号<40)
{
返回false;
}
返回true;
}
您忘记返回bool
值-
public bool HasPassed()
{
return yearMark >= 40;
}
您的方法有一个bool返回值,所以您需要返回true或false,而不仅仅是设置一个名为haspass的字段。将方法更改为在内部返回true或false如果需要返回值,请尝试以下操作:
public bool HasPassed()
{
return ( yearMark >= 40 )
}
修复取决于您的预期设计如何工作。如果函数
HasPassed()
应该返回HasPassed
的布尔值,那么您需要在代码中显式返回它
public bool HasPassed()
{
if (yearMark < 40)
{
hasPassed = false;
}
else
{
hasPassed = true;
}
return hasPassed;
}
只要检查调用方法中的
传递的内容,就不必返回任何内容
private bool hasPassed;
public void HasPassed()
{
if (yearMark < 40)
{
hasPassed = false;
}
else
{
hasPassed = true;
}
}
public void Main()
{
HasPassed();
if (hasPassed)
{
//Do something
}
}
private bool已通过;
已通过公开作废()
{
如果(年号<40)
{
hasspassed=假;
}
其他的
{
hasspassed=true;
}
}
公共图书馆
{
已通过();
如果(已通过)
{
//做点什么
}
}
不是我该怎么做,而是它的另一个解决方案。错误意味着它可能不会返回值。该代码实际上根本没有试图返回任何内容。您应该返回一个值,否则haspass()的值将始终为false。尝试在voidreturn haspass的末尾追加以下行
@SystemDown,我记得VB是通过将值赋给方法名来返回值的。@ZaidMasud-这是真的,但是已经传递了
这里有一个私有变量,这让我认为这实际上可能是对getter/setter的一次尝试。
private bool hasPassed;
public void HasPassed()
{
if (yearMark < 40)
{
hasPassed = false;
}
else
{
hasPassed = true;
}
}
public void Main()
{
HasPassed();
if (hasPassed)
{
//Do something
}
}