C# 调用没有参数的委托?

C# 调用没有参数的委托?,c#,delegates,C#,Delegates,我想了解Invoke(delegate)方法。我不明白为什么我不需要指定参数。如果我需要他们的供应…希望你能更好地理解我的意思。多谢各位 EventHandler a = new EventHandler(this.A); Invoke(a); //where doest it take the arguments from? a(); //does not work, missing arguments 因为Invoke是要在Windows

我想了解Invoke(delegate)方法。我不明白为什么我不需要指定参数。如果我需要他们的供应…希望你能更好地理解我的意思。多谢各位

 EventHandler a = new EventHandler(this.A);
            Invoke(a); //where doest it take the arguments from?

            a(); //does not work, missing arguments

因为Invoke是要在Windows窗体上使用的,并且这里使用的事件模式已经很好地指定,所以Invoke方法可以进行有根据的猜测。事实上,如果您尝试使用invoke调用一个没有参数的EventHandler,它会做什么:

委托可以是EventHandler的实例,在这种情况下 sender参数将包含此控件和事件参数 将包含EventArgs.Empty


您可以而且应该使用Invoke重载,该重载允许您指定委托的参数,以便更明确地说明正在发生的事情。另外,在不使用参数数组的情况下调用Invoke将仅适用于类型为EventHandler的委托(当然,也可以是首先不使用任何参数的委托)。

我不使用EventHandler,但我对委托使用动态调用。通常,至少对我来说,代码最终是这样的

a.Invoke(new object[] { arg0, .... argn });