委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。委托的类型由委托的名称定义。下面的示例声明了一个名为 Del 的委托,该委托可以封装一个采用字符串作为参数并返回 void 的方法。

构造委托对象时,通常提供委托将包装的方法的名称或使用匿名方法。实例化委托后,委托将把对它进行的方法调用传递给方法。调用方传递给委托的参数被传递给方法,来自方法的返回值(如果有)由委托返回给调用方。这被称为调用委托。可以将一个实例化的委托视为被包装的方法本身来调用该委托.

委托类型派生自 .NET Framework 中的 Delegate 类。委托类型是密封的,不能从 Delegate 中派生委托类型,也不可能从中派生自定义类。由于实例化委托是一个对象,所以可以将其作为参数进行传递,也可以将其赋值给属性。这样,方法便可以将一个委托作为参数来接受,并且以后可以调用该委托。

 


using System;

namespace
 DelegateDemo
{
    
//声明一个委托,委托的类型由委托的名称定义。

    public delegate void Del(string message);
    
/// <summary>

    
/// Summary description for Class1.
    
/// </summary>

    class Class1
    {
        
/// <summary>

        
/// The main entry point for the application.
        
/// </summary>

        [STAThread]
        
static void Main(string
[] args)
        {
            
//实例化委托

            Del handler = new Del(DelegateMethod);
            
//
委托多路广播
            
//handler += new Del(DelegateMethod2);

            handler("invoke delegate");
            
//将上面创建的委托传递给该方法

            MethodWithCallback(handler);
            Console.Read();
        }
        
public static void DelegateMethod(string
 message)
        {
            System.Console.WriteLine(message);
        }
        
public static void DelegateMethod2(string
 message)
        {
            System.Console.WriteLine(
"this is 2 "+
message);
        }
        
//将上面创建的委托作为参数传递给该方法

        public static void MethodWithCallback(Del callback)
        {
            callback(
"callback delegate"
);
        }

    }
}

posted on 2009-05-30 21:44  钱途无梁  阅读(254)  评论(0编辑  收藏  举报