布尔的C#方法组?

时间:2017-11-06 11:41:49

标签: c# methods

我已经创建了一些代码,但我找不到它的错误。这是代码:

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (MyMethod) //<==underlines this and gives the error
        {
            //code
        }
        else
        {
            //code
        }
     }

    public bool MyMethod()
    {
        if (Form1.f >= 0.001)
            return true;
        else
            return false;
    }

我得到的错误消息:

  

无法将方法组“MyMethod”转换为非委托类型“bool”。   你打算调用这个方法吗?

有人可以帮我解决这个问题吗?我似乎无法做到正确,我已经尝试了几件事......我也尝试将其更改为字符串并将返回值更改为字符串,但这会产生相同的错误(除了bool,它已更改为字符串) 。提前谢谢!

3 个答案:

答案 0 :(得分:9)

MyMethod不是字段或属性,而是方法。必须使用()调用方法:

if (MyMethod()){ ... }

你可以把它变成一个属性,然后你不需要它们,比如说。作为expression-body

public bool MyMethod => Form1.f >= 0.001;

现在你可以使用(选择更有意义的名字):

if (MyMethod) { ... }

答案 1 :(得分:2)

您实际上是将委托传递给方法而不是方法的结果。要调用方法以便检查函数的结果,需要在结尾添加括号,如下所示:

if (MyMethod())

答案 2 :(得分:2)

非常简单的错误。您忘记将()放在方法名称之后,因此您的参数被视为委托并调用错误,因为它无法转换为非委托类型的'bool'。

if (MyMethod()) //<==corrected  the error
{
    //code
}
else
{
    //code
}