100.C# 委托进阶

摘要


委托的动态添加与移除,委托返回值,匿名委托。

正文


委托的动态添加与移除

通过+=增加方法,-=移除方法

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

标签:进阶   都会   表达式   主体   摘要   关键字   参数   发生   情况   方法   动态

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top