码迷,mamicode.com
首页 > 其他好文 > 详细

代理方法关键字Action与Fun的使用

时间:2014-06-18 06:54:36      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:class   blog   code   使用   2014   string   

代理是一种特殊的,指向某个方法模块所在的地址。一般来讲,那个方法模块,可以是一个普通的方法,更多的时候,是一团匿名的lamda表达式,即一个匿名方法。现在简单理解一下代理的简写方式,即Action关键字。

    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相同,只是对于参数,前几个是传入值,最后一个是返回值。

代理方法关键字Action与Fun的使用,布布扣,bubuko.com

代理方法关键字Action与Fun的使用

标签:class   blog   code   使用   2014   string   

原文地址:http://blog.csdn.net/sundacheng1989/article/details/31797231

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!