今天看到了Delegate.Combine静态方法,就随手测试了下。

本以为只要是参数和返回类型相同的 就可以了,如下所示

Delegate d3 = Delegate.Combine(newtext1(method1), newtext2(method2));

结果报错, “委托必须具有相同的类型。”

将两个参数都改为text1后运行正常,

public delegate void text1();

public delegate void text2();

public void method1() { MessageBox.Show("m1"); }

public void method2() { MessageBox.Show("m2"); }

private void button2_Click(object sender, EventArgs e)

{Delegate d3 = Delegate.Combine(new text1(method1), new text1(method2));

this.Invoke(d3);

 }

相当于事件的+=方法。