我已经创建了一些代码,但我找不到它的错误。这是代码:
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,它已更改为字符串) 。提前谢谢!
答案 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
}