委托可以有一个可选参数吗?
我有下面的代码工作正常,直到我尝试添加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) { ... }
无可否认,我是Delegates
和Optional 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);