2016-12-16 42 views
0

我必须将多个方法添加到委托的调用列表中。但是,他们都有与之相关的决策逻辑。因此,在方法连接到委托的调用列表之前有一个if块。我可以在不实例化委托的情况下做到这一点。代码片段如下所示:如何在不实例化委托的情况下将方法添加到委托的调用列表中?

public delegate void SomeDelegate(); 

static void Method1() {} 
static void Method2() {} 

static void AddMethodsToInvocationList() 
{ 
    SomeDelegate someDelegate = new SomeDelegate(); 
    if (someLogic1) someDelegate += Method1; 
    if (someLogic2) someDelegate += Method2; 
} 

基本上,我希望能够不经过任何方法作为参数来创建委托的实例。不过,如果我尝试实例化委托而不传递任何方法作为参数,则会出现“不包含带0参数的构造函数”错误的编译器错误。

如果其他人有更好的方法来解决这个问题,我也会开放。但是,必须使用代表。

谢谢你的帮助。非常感激。

回答

0

您可以简单地将其初始化为null。这是多播委托没有任何操作添加到它的习惯价值。

+0

传递null给我一个“方法名称预期”编译器红色波浪状。 –

+0

@SaikatDas您可以在每种语言版本中将'null'赋值给任何委托变量。你显然并没有真的把'null'分配给变量,而是做了别的事情。 – Servy

+0

是的,这解决了我的问题。我已经将null传递给初始值设定项。但是,你的意思是将null分配给正在声明的变量。谢谢。 –

相关问题