C/C++培训
美国上市C/C++培训机构

400-111-8989

热门课程

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

  • 时间:2015-01-14
  • 发布:达内
  • 来源:达内

代理是一种特殊的,指向某个方法模块所在的地址。一般来讲,那个方法模块,可以是一个普通的方法,更多的时候,是一团匿名的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++对象确定性析构的原则来解析单例模式

C/C++数组知识,C/C++数组问题知识总结

C++培训教程:C++ 中的智能指针知识点

C/C++开发程序员这些基础必须熟记!

C++学习笔记之win32平台日志类

选择城市和中心
贵州省

广西省

海南省