C/C++培训
达内IT学院
400-996-5531
代理是一种特殊的,指向某个方法模块所在的地址。一般来讲,那个方法模块,可以是一个普通的方法,更多的时候,是一团匿名的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相同,只是对于参数,前几个是传入值,最后一个 是返回值。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved