委托可以有一个可选参数吗?

我有下面的代码工作正常,直到我尝试添加bool NetworkAvailable = true部分。 现在我在下面第4行得到一个Method name expected编译时exception。

 void NetworkStatus_AvailabilityChanged(object sender, NetworkStatusChangedArgs e) { var networkAvailable = e.IsAvailable; SetUpdateHUDConnectedMode d = new SetUpdateHUDConnectedMode(UpdateHUDConnectedMode(networkAvailable)); this.Invoke(d); } delegate void SetUpdateHUDConnectedMode(bool NetworkAvailable = true); private void UpdateHUDConnectedMode(bool NetworkAvailable = true) { ... } 

无可否认,我是DelegatesOptional Parameters新手,所以我将不胜感激。 谢谢。

委托指向方法定义。
实例化指向方法的委托时,不能指定任何参数。

相反,您需要将参数值传递给Invoke方法,如下所示:

 SetUpdateHUDConnectedMode d = UpdateHUDConnectedMode; this.Invoke(d, e.IsAvailable); 

在某种程度上非常有限。 使用C#4:

  public delegate void Test(int a, int b = 0); static void T1(int a, int b) { } static void T2(int a, int b = 0) { } static void T3(int a) { } Test t1 = T1; Test t2 = T2; Test t3 = T3; // Error 

然后你可以打电话

  t1(1); t1(1, 2); t2(2); t2(2, 3);