C#中的Delegate

来源:互联网 发布:计算机视觉常用算法 编辑:程序博客网 时间:2024/05/17 08:46

Delegate是什么?

    Delegate中文翻译为“委托”。Msdn中对Delegate的解释如下:

    C#中的委托类似于C或C++中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象、类型安全的,并且是安全的。

先看下例子:

 class Program    {        public delegate int Max(int v1,int v2);        static void Main(string[] args)        {            Max m_max = new Max(Program.printf);                   m_max += new Max(Program.testdel);            m_max.Invoke(4,8);            do            {            } while (true);        }        static public int printf(int a, int b)        {           Console.WriteLine("printf...............{0}",a>b?a:b);            return a > b ? a : b;        }        static public int testdel(int b,int a)        {            Console.WriteLine("test...........");            return 1;        }    }
显示的结果。

Delegate在搭载多个方法时,可以通过+=增加搭载的函数,也可以通过-=来去掉Delegate中的某个函数。

0 0