代理方法keywordAction与Fun的使用

本文详细解释了代理和Action在C#中的作用,通过实例展示了如何使用代理和Action来定制方法的运行结果,同时介绍了如何利用Action简化匿名方法的调用过程。

代理是一种特殊的,指向某个方法模块所在的地址。一般来讲,那个方法模块,能够是一个普通的方法,很多其它的时候,是一团匿名的lamda表达式,即一个匿名方法。如今简单理解一下代理的简写方式,即Actionkeyword。

    class A
    {
        B b = new B();

        public delegate string Show(string result);

        public string Execute()
        {
            Show s = new Show(b.MyShow);
            string str = s.Invoke("ttt");
            return str;
        }
    }

    class B
    {
        public string MyShow(string s)
        {
            return s + ">>>>>>>>>";
        }
    }

    static void Main(string[] args)
    {
        A a = new A();
        a.Execute();
    }
这样,使用A的时候,仅仅改变B中MyShow的代码,就能定制A中Execute的运行结果。具有相同功能的代码,我们用Action类型来完毕。
    class C
    {

        D d = new D();
        Action<string> action;

        public void Execute()
        {
            action = d.MyShow2;
            action.Invoke("ttt");
        }
    }

    class D
    {
        public void MyShow2(string s)
        {
            Console.WriteLine(s + ">>>>>>>>>");
        }
    }

    static void Main(string[] args)
    {
        A a = new A();
        a.Execute();
    }

这段代码与上边的代码具有相同的效果。能够看出,从本质上讲,就是Action就是delegate的简化模式,就假设lamda表达式来简化匿名方法一样。当匿名方法必需要有返回值的时候,我们使用Fun类型来处理。用法基本上有Action相同,仅仅是对于參数,前几个是传入值,最后一个是返回值。

转载于:https://www.cnblogs.com/hrhguanli/p/3872758.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值