C# 是否通过强制转换委托将方法添加到事件?

C# 是否通过强制转换委托将方法添加到事件?,c#,C#,我有Java背景,目前正在学习c 我知道,当一个人想要订阅一个事件的方法时,他会像下面这样做: button.Click += HandleClick; void HandleClick (object sender, EventArgs e) { button.Text = string.Format (count++ + " clicks!"); } 然而,人们似乎可以这样写: button.Click += delegate {button.Text = string.Form

我有Java背景,目前正在学习c

我知道,当一个人想要订阅一个事件的方法时,他会像下面这样做:

button.Click += HandleClick;

void HandleClick (object sender, EventArgs e) {
   button.Text = string.Format (count++ + " clicks!"); 
}
然而,人们似乎可以这样写:

button.Click += delegate {button.Text = string.Format (count++ + " clicks!");};
我们是否将该方法强制转换为委托?我以为活动需要订阅一个方法?上面到底发生了什么

我们是否将该方法强制转换为委托

好的,您不是强制转换,而是使用方法组转换将方法名称转换为委托

我以为活动需要订阅一个方法

否,事件需要委托才能订阅(或取消订阅)。您可以使用给定的代码或更明确的方式从方法创建委托实例:

button.Click += new EventHandler(HandleClick);
甚至将两者分开:

EventHandler handler = HandleClick; // Method group conversion
button.Click += handler;            // Event subscription
。。。也可以从匿名函数(匿名方法或lambda表达式)创建委托实例

有关更多信息,请参阅我的

我们是否将该方法强制转换为委托

好的,您不是强制转换,而是使用方法组转换将方法名称转换为委托

我以为活动需要订阅一个方法

否,事件需要委托才能订阅(或取消订阅)。您可以使用给定的代码或更明确的方式从方法创建委托实例:

button.Click += new EventHandler(HandleClick);
甚至将两者分开:

EventHandler handler = HandleClick; // Method group conversion
button.Click += handler;            // Event subscription
。。。也可以从匿名函数(匿名方法或lambda表达式)创建委托实例

有关更多信息,请参阅我的

我们是否将该方法强制转换为委托

好的,您不是强制转换,而是使用方法组转换将方法名称转换为委托

我以为活动需要订阅一个方法

否,事件需要委托才能订阅(或取消订阅)。您可以使用给定的代码或更明确的方式从方法创建委托实例:

button.Click += new EventHandler(HandleClick);
甚至将两者分开:

EventHandler handler = HandleClick; // Method group conversion
button.Click += handler;            // Event subscription
。。。也可以从匿名函数(匿名方法或lambda表达式)创建委托实例

有关更多信息,请参阅我的

我们是否将该方法强制转换为委托

好的,您不是强制转换,而是使用方法组转换将方法名称转换为委托

我以为活动需要订阅一个方法

否,事件需要委托才能订阅(或取消订阅)。您可以使用给定的代码或更明确的方式从方法创建委托实例:

button.Click += new EventHandler(HandleClick);
甚至将两者分开:

EventHandler handler = HandleClick; // Method group conversion
button.Click += handler;            // Event subscription
。。。也可以从匿名函数(匿名方法或lambda表达式)创建委托实例


有关详细信息,请参见my。

委托的
关键字正在创建一个新的匿名方法。然后(隐式)创建一个引用该匿名方法的委托,并将该委托添加为该事件的委托之一。

delegate
关键字正在创建一个新的匿名方法。然后(隐式)创建一个引用该匿名方法的委托,并将该委托添加为该事件的委托之一。

delegate关键字正在创建一个新的匿名方法。然后(隐式)创建一个引用该匿名方法的委托,并将该委托添加为该事件的委托之一。

delegate关键字正在创建一个新的匿名方法。然后(隐式)创建引用该匿名方法的委托,并将该委托添加为该事件的委托之一