我有一个代码将事件附加到表单。
this.form.Resize += new EventHandler(form_Resize);
如您所见,这是由+=
完成的。
如果上述代码执行了两次或多次,
this.form.Resize += new EventHandler(form_Resize);
this.form.Resize += new EventHandler(form_Resize);
this.form.Resize += new EventHandler(form_Resize);
this.form.Resize += new EventHandler(form_Resize);
this.form.Resize += new EventHandler(form_Resize);
多次附加回调方法?
将该方法称为多少次
form_Resize
?
如果多次将回调方法分配给同一个对象,事件是否会多次执行?
答案 0 :(得分:6)
每次附加事件处理程序时都会调用一次。 (C#)
为防止双重附件,您可以使用此模式:
this.form.Resize -= new EventHandler(form_Resize);
this.form.Resize += new EventHandler(form_Resize);
如果没有附加处理程序,第一个语句不会抛出错误,并且会删除现有的处理程序。
答案 1 :(得分:2)
它将在C#中 - 我不知道Java。您正在向同一方法添加多个委托,并且将依次调用每个委托。
这是一个证明它的简单例子:
using System;
class Example
{
static event Action Bar;
static void Main()
{
Bar += Foo;
Bar += Foo;
Bar();
}
static void Foo()
{
Console.WriteLine("Foo");
}
}
答案 2 :(得分:0)
在调用列表中允许重复,所以是的,该方法将被执行多次。至少在C#中。