在 button1_click 上出现一个又一个消息框 - 首先显示 30,第二个显示 200:
public partial class Form1 : Form
{
delegate void myMathFunction(int j, int q);
void add(int x, int y) {MessageBox.Show((x + y).ToString());}
void multiply(int x, int y){MessageBox.Show((x*y).ToString());}
private void button1_Click(object sender, EventArgs e)
{
myMathFunction foo = new myMathFunction(add);
foo+= new myMathFunction(multiply);
foo.Invoke(10, 20);
}
public Form1() { InitializeComponent(); }
}
但以下只是直接到 200,但我已经将这两种方法都分配给了委托 - 添加发生了什么,为什么它选择使用乘法?
public partial class Form1 : Form
{
delegate int myMathFunction(int j, int q);
int add(int x, int y){return x + y;}
int multiply(int x, int y) {return x * y;}
private void button1_Click(object sender, EventArgs e)
{
myMathFunction foo = new myMathFunction(add);
foo += new myMathFunction(multiply);
MessageBox.Show(foo.Invoke(10, 20).ToString());
}
public Form1() { InitializeComponent(); }
}
是否可以修改第二个代码示例,以便委托运行 add 方法而不是 multiply 方法?