[Investor Relations]  |  官方微博

C/C++培训

美国上市公司 · 亿元级外企Java培训企业

  • 全国服务监督电话400-111-8989
  • 代理方法关键字Action与Fun的使用

    发布:达内  来源:达内  时间: 2015年01月14日

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

  • 代理是一种特殊的,指向某个方法模块所在的地址。一般来讲,那个方法模块,可以是一个普通的方法,更多的时候,是一团匿名的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相同,只是对于参数,前几个是传入值,最后一个 是返回值。

  • 上一篇:C++设计模试实现-State

    下一篇:C++培训:利用C++对象确定性析构的原则来解析单例模式

网站导航
2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56