Index :

 (1)类型语法、内存管理和垃圾回收基础

 (2)面向对象的实现和异常的处理基础

 (3)字符串、集合与流

 (4)委托、事件、反射与特性

 (5)多线程开发基础

 (6)ADO.NET与数据库开发基础

 (7)WebService的开发与应用基础

1.1 简述委托的基本原理

  委托这个概念对C++程序员来说并不陌生,因为它和C++中的函数指针非常类似,很多码农也喜欢称委托为安全的函数指针。无论这一说法是否正确,委托的的确确实现了和函数指针类似的功能,那就是提供了程序回调指定方法的机制

  在委托内部,包含了一个指向某个方法的指针(这一点上委托实现机制和C++的函数指针一致),为何称其为安全的呢?因此委托和其他.NET成员一样是一种类型,任何委托对象都是继承自System.Delegate的某个派生类的一个对象,下图展示了在.NET中委托的类结构:

.NET基础拾遗(4)委托、事件、反射与特性

  从上图也可以看出,任何自定义的委托都继承自基类System.Delegate,在这个类中,定义了大部分委托的特性。那么,下面可以看看在.NET中如何使用委托:

    // 定义的一个委托
    public delegate void TestDelegate(int i);

    public class Program
    {
        public static void Main(string[] args)
        {
            // 定义委托实例
            TestDelegate td = new TestDelegate(PrintMessage);
            // 调用委托方法
            td(0);
            td.Invoke(1);

            Console.ReadKey();
        }

        public static void PrintMessage(int i)
        {
            Console.WriteLine("这是第{0}个方法!", i.ToString());
        }
    }
View Code

相关文章: