C#委托实例简单分析

开发 后端
这里介绍C#委托实例的一个有趣且有用的属性是:它既不知道也不关心有关它所封装的方法所属的类的种种详情;对它来说最重要的是这些方法与该委托的类型兼容。

C#语言有很多值得学习的地方,这里我们主要介绍C#委托实例,包括介绍重复调用 SimpleDelegate 的 MultiCall 方法等方面。

委托适用于那种在某些其他语言中需用函数指针来解决的情况(场合)。但是,与函数指针不同,委托是面向对象和类型安全的。

委托声明定义一个类,它是从 System.Delegate 类派生的类。C#委托实例封装了一个调用列表,该列表列出了一个或多个方法,每个方法称为一个可调用实体。对于实例方法,可调用实体由一个实例和该实例的方法组成。对于静态方法,可调用实体仅由一个方法组成。如果用一组合适的参数来调用一个C#委托实例,则该C#委托实例所封装的每个可调用实体都会被调用,并且用的都是上述的同一组参数。

C#委托实例的一个有趣且有用的属性是:它既不知道也不关心有关它所封装的方法所属的类的种种详情;对它来说最重要的是这些方法与该委托的类型兼容。这使委托非常适合“匿名”调用。这是一个强大的功能。

定义和使用委托分三个步骤:声明、实例化和调用。委托用委托声明语法来声明。示例

  1. delegate void SimpleDelegate(); 

声明一个名为 SimpleDelegate 的委托,它不带参数并且不返回任何结果。

  1. class Test  
  2. {  
  3.    static void F() {  
  4.       System.Console.WriteLine("Test.F");  
  5.    }  
  6.    static void Main() {  
  7.       SimpleDelegate d = new SimpleDelegate(F);  
  8.       d();  
  9.    }  

创建一个 SimpleDelegate 实例,然后立即调用它。

这样做(为方法创建一个委托,然后立即通过这个委托调用该方法)并没有太大意义,因为直接调用方法更简单。当涉及它的匿名特性时,委托才真正显示出它的效用。

  1. void MultiCall(SimpleDelegate d, int count) {  
  2.    for (int i = 0; i < count; i++) {  
  3.       d();  
  4.    }  

显示了一个重复调用 SimpleDelegate 的 MultiCall 方法。MultiCall 方法不知道也不在乎 SimpleDelegate 的目标方法的类型、该方法所具有的可访问性或者该方法是否为静态。对它来说最重要的是目标方法与 SimpleDelegate 兼容。以上介绍C#委托实例

【编辑推荐】

  1. C# 3.0编译器简单介绍
  2. C#使用函数重载学习笔记
  3. Visual C#对数据库处理概述
  4. C#具有隐式类型声明描述
  5. C#使用SharpZipLib分析
责任编辑:佚名 来源: 博客园
相关推荐

2009-10-09 09:07:40

C#委托和事件

2009-09-01 18:25:32

C#结构实例

2009-09-08 15:28:24

C#委托

2009-08-26 14:31:08

C#打印文件

2009-08-27 15:17:18

C# interfacinterface使用

2009-08-18 10:35:26

C#委托

2009-08-27 18:05:54

C#索引功能

2009-08-27 18:02:22

C#事件处理

2009-08-27 15:34:38

C#命名空间

2009-08-31 18:24:26

编译C#文件

2009-08-26 18:00:07

C#内部类

2009-09-01 17:32:04

C#版本控制

2009-09-01 18:05:17

C#类型声明

2011-04-22 09:14:26

C#委托

2009-09-02 10:59:02

C#单路代理

2009-09-03 17:13:19

C#建立项目

2009-08-26 14:01:18

C#标识符

2009-08-20 18:37:52

委托C#异步委托

2009-08-31 16:01:31

C#和设计模式

2009-09-01 10:08:57

C#运算符
点赞
收藏

51CTO技术栈公众号