首页 > 代码库 > 代理方法关键字Action与Fun的使用
代理方法关键字Action与Fun的使用
代理是一种特殊的,指向某个方法模块所在的地址。一般来讲,那个方法模块,可以是一个普通的方法,更多的时候,是一团匿名的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相同,只是对于参数,前几个是传入值,最后一个是返回值。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。