2016-12-03 53 views
-3
private void blokace(object sender, EventArgs e) 
{ 
// ... 
} 

然后用它在if这样不能转换方法组

if (blokace) 

但我得到一个编译器错误,“不能转换方法组‘blokace’非委托类型‘布尔’。难道你打算调用这个方法吗?“

有人可以帮我吗?它总是这样做,它的工作,我不知道,现在有什么问题。

+0

我已从您的图片中获取相关代码并将其添加到您的问题中。如果我离开的不是你的意图,请随时恢复我的编辑。 – jdphenix

回答

0

你不能做

if(blokace) 

因为blokace不是一个布尔表达式,是一种方法

可以

if(blokace()) 

,当且仅当方法返回一个布尔值,但在您的情况下blokace将返回什么(无效)

此外

blokace看起来像一个eventMethod所以你通常不调用,但等待它是调用例如东西按下按钮,套接字已连接,列表已更改等

+1

您的建议不起作用。它不会编译,因为它返回无效 – CodingYoshi

+0

@CodingYoshi,感谢您的评论,我表示OP ***可以做***但*** ......我反正编辑了这个问题 –

0

当您使用if语句时,结果应该是布尔值(true,false)。你的方法返回一个void。你基本上是在说如果(void)不是真或假。

也许你应该从你的方法返回true或false,然后它会工作。或者您可以从您的方法中返回其他内容,然后检查返回的值。例如:

private string Blockace(object sender, EventArgs e) 
{ 
    // do some work 
    return "yes"; 
} 

然后您可以检查返回的值。但你也需要发送两个参数:发件人和电子邮件

if (Blockace(sender, e) == "yes") 
{ 
    // do whatever you need 
} 

我可以从blockace方法签名看到它是一个事件处理程序。你需要从UI控制中重新使用它内部的代码(点击或者其他),但是你也需要从你的代码中使用它。因此创建一个方法并将通用代码放在那里。然后,您可以调用包含事件处理程序以及其他地方的公共代码的方法。