上的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(); }
}
可以在第二示例代碼進行修改,以使代表運行添加方法,而不是乘法方法?
我該如何修改它,使其運行添加而不是繁殖? – whytheq
它總是會同時執行。您可以將一個函數添加到委託實例中。或者你可以最後添加add函數。你已經清楚地知道委託調用如何處理返回值。你沒有告訴的是你的最終目標是什麼。你想解決什麼問題? –
我只是想了解代表!無非是好奇心大衛。如果兩個函數都添加到委託中,如果我無法得到它,添加第一個函數有什麼意義? – whytheq