C# 正确或错误的方法不起作用

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

我试图为测试分数设置一个名为haspass()的方法,但似乎无法实现

我得到的错误是:

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;
    }
}
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。尝试在void
return 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
    }
}