button1_clickで、次々にメッセージボックスが表示されます。最初に30が表示され、2番目に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(); }
}
デリゲートがmultiplyメソッドではなくaddメソッドを実行するように、2番目のコードサンプルを修正できますか?