摘要
委托的动态添加与移除,委托返回值,匿名委托。
正文
委托的动态添加与移除
通过+=增加方法,-=移除方法
delegate int MyDel(int x,int y);
int Add(int x,int y)
{
return x + y;
}
int Minus(int x,int y)
{
return x - y;
}
private void btnShow_Click(object sender, EventArgs e)
{
MyDel del1 = new MyDel(Add);
del1 += new MyDel(Minus);
del1 -= new MyDel(Minus);
int x = del1(2, 3);
MessageBox.Show(x.ToString());
}
调用带返回值的委托
如果委托有返回值并且在调用列表中有一个以上的方法,会发生下面的情况。
delegate int MyDel(int x);
int sum = 5;
int Add(int x)
{
sum += x;
return sum;
}
int Minus(int x)
{
sum -= x;
return sum;
}
private void btnShow_Click(object sender, EventArgs e)
{
MyDel del1 = new MyDel(Add);
del1 += new MyDel(Minus);
del1(2);
MessageBox.Show(sum.ToString());
}
匿名方法
如果方法只会使用一次,我们用匿名方法就方便多了
delegate int MyDel(int x);
private void btnShow_Click(object sender, EventArgs e)
{
MyDel del = delegate (int x)
{
return x + 20;
};
MessageBox.Show(del(10).ToString());
}
Lambda表达式
删除delegate关键字;
在参数列表和匿名方法主体之间放Lambdai运算符=>。Lambdai运算符读作“goes to”。
private void btnShow_Click(object sender, EventArgs e)
{
MyDel del1 = (x) =>
{
return x + 10;
};
MessageBox.Show(del1(10).ToString());
}
页面更新:2024-03-13
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号