c#委托方法 把方法交给调用的地方去实现

3 篇文章 0 订阅
1 篇文章 0 订阅

定义一个类如下,假设下方类中GetCount方法需要由具体情况来决定如何写的话:

public delegate decimal GetCountDelegate(object item);

public class CommonHelper
{
    public event GetCountDelegate GetCountEvent;

    public CommonHelper(GetCountDelegate _getCount)
    {
        GetCountEvent+=_getCount;
    }

    public decimal PrintCount(object item)
    {
        var count=GetCountEvent(item);
        //这里可以直接使用count进行需要的处理
        //do something...

        return count;
    } 
}

调用上面这个类时,就需要传入GetCount方法的具体实现,如下:

//假设这是一个不确定类型的变量
object obj=..;
CommonHelper commonHelper=new CommonHelper((object item)=>{
        decimal count=0;
        if(item is Line)
        {
            count=(item as Line).Length;
        }
        else if(item is Tree)
        {
            count=1;
        }
        return count;
});

commonHelper.PrintCount(obj);

这样的话,在CommonHelper类中就可以不用实现计算数量的方法直接使用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值