就他吧-9ta8为您提供:身份证查询、15位转16位身份证,手机号码归属地查询,IP地址查询服务,城市天气预报查询,列车时刻表简易快速查询等等查询服务,就他吧欢迎您的光临!!
随笔 - 96  文章 - 7  评论 - 749  阅读 - 72万

Visual C#2005中的匿名委托的实现

        委托技术是.NET引入的一种重要技术,使用委托可以实现对象行为的动态绑定,从而提高设计的灵活性。
        首先,delegate中可以注册任意多个回调,在一个delegate被调用的时候,已经注册的过程将会被逐个调用。 
        其次,delegate允许注册一个对象的方法,而不像C++中指可以使用静态方法或者全局方法作为函数指针,提供了更多的灵活性,同时也暗示我们,delegate中按照某种方式保存了object的很多信息。

下面看看委托在C#1.1中的实现:
        public delegate void thisDelegate(int a); 
        public void Eample1() 
        { 
          thisDelegate testdel1 = new thisDelegate(outInt); 
          testdel1(12); 
        }

        public void outInt(int x) 
        { 
          Console.WriteLine("output x : {0}", x); 
        } 

        在C#2.0的匿名delegate中,我们甚至可以访问当前匿名委托的上下文变量。上面的例子在C#2.0中可以这么写:
        public void Eample1() 
        { 
          thisDelegate testdel1 = outInt; 
          testdel1(12); 
        } 
或者这么写也可以:
        delegate void thisDelegate2(int a); 
        public void Eample2() 
        { 
          int a = 12; 
          thisDelegate ev2 = delegate(ref int x) 
          { Console.WriteLine("output x : {0}", x); }; 
          ev2( ref a); 
        } 

        在C#1.1中,委托对于局部变量是没有除参数外的访问方式的,而在2.0中已经可以实现了,我们在看下面的例子:
        public static void  Eample3() 
        { 
          int a = 12; 
          int y = 32; 
          thisDeliete ev2 = delegate(ref int x) 
          { Console.WriteLine("output x + y : {0}", x + y); }; 
          ev2( ref a); 
        }
        在这个例子中,匿名函数中的内容x + y的值被正确的输出了,这样做有什么意义呢?实际上使用匿名委托最大的好处在于可以完整地克隆当前运行空间上下文的可用变量,我觉着这就是他的意义所在。

posted on   振河  阅读(3294)  评论(4编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
< 2005年9月 >
28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 1
2 3 4 5 6 7 8

  就他吧-9ta8伴您开心每一天
点击右上角即可分享
微信分享提示