我有以下代码正常工作,直到我尝试添加bool NetworkAvailable = true
部分。现在我在下面的第4行得到Method name expected
编译时异常。
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
的新手,所以我很感激任何见解。感谢。
答案 0 :(得分:24)
在某种程度上非常有限。使用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);
答案 1 :(得分:5)
代表指向方法定义 实例化指向方法的委托时,不能指定任何参数。
相反,您需要将参数值传递给Invoke
方法,如下所示:
SetUpdateHUDConnectedMode d = UpdateHUDConnectedMode;
this.Invoke(d, e.IsAvailable);