.NET 委托

定义一个委托:

public delegate void Del( string message); 

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

例如:// Create a method for a delegate.

public static void DelegateMethod(string message)

{

System.Console.WriteLine(message);

}

// Instantiate the delegate.

Del handler = DelegateMethod;

// Call the delegate.

handler("Hello World");

委托(Delegate):

是.NET Framework对C#和VB.NET等面向对象编程语言特性的一个重要扩充。
委托是.NET中的一些重要技术,比如事件、异步调用和多线程开发的技术基础。
委托在.NET开发中应用极广,每一名.NET软件工程师都必须了解委托。
1.委托可以看成是一个方法的“容器”,将某一具体的方法“装入”后,就可以把它当成方法一样调用。
2.一个委托类型的变量,可以引用任何一个满足其要求的方法。从这点意义上看,委托类似于C语言中的“函数指针”。
由于委托变量可以引用一个方法调用列表,并且具有可以被随时改变所引用的方法调用列表的特性,这就使委托在开发中大有用处,可以解决许多实际问题。

1.定义委托类型
2.定义一个或多个符合委托类型的方法
3.定义委托类型的变量
4.将第2步定义的方法引用“挂接”到第3步定义的变量,以形成一个“方法调用列表”。
5.通过委托变量“间接”调用方法调用列表。
定义委托:
public delegate int AddDelegate(int i,int j );
使用匿名方法定义委托变量
AddDelegate del = delegate(int i, int j){return i+ j;};

Console.WriteLine(del(100,200));
匿名方法其实是将方法定义与委托变量赋值两个步骤合在一起。
委托类型可作为方法形参
public static void invokeDelegate(AddDelegate del, int i, int j)
{Console.WriteLine( del(i, j) );}
匿名方法可直接作为方法的实参
invokeDelegate(delegate(int i, int j){return i+ j;}, 100, 200);

多路广播委托:http://msdn.microsoft.com/zh-cn/library/ms173175.aspx


//定义泛型委托
 

   //定义泛型委托
    public delegate T MyGenericDelegate<T>(T obj);

    class Program
    {

        static void Main(string[] args)
        {
            //使用匿名方法给泛型委托变量赋值
            MyGenericDelegate<int> del = delegate(int vlaue)
            {
                return vlaue * 2;
            };
            MyGenericDelegate<string> add = delegate(string content)
            {
                return content;
            };

            //调用泛型委托变量引用的匿名方法
            Console.WriteLine(del(100));
            Console.WriteLine(add("Hello World!"));
            Console.ReadKey();
        }
    }

 
匿名方法小结在.NET 2.0时代,匿名方法主要是作为简化代码的手段而引入到C# 2.0语法特性中的。
然而,也许设计者事先也并没有预想到,这一原先仅出现在特定编程语言中的特性,却成为了.NET 3.5中的重要技术——LINQ的基础之一。
 委托是一种方法引用类型。一旦为委托分配了方法,委托将与方法具有相同的行为。
委托方法的使用和其他方法一样,同样具有返回值和参数。与委托的签名(由返回类型和参数组成)匹配的任何方法都可以分配给该委托。
这样就可以通过编程方式改变方法的调用,还可以向现有类中插入新代码。只要知道委托的签名,便可以分配自己的委托方法。
 再次提醒:委托是一项重要的编程技能,所有的.NET开发者都必须掌握它。否则,将在开发.NET应用程序的过程中遇到很多困难。
 MSDN中介绍委托:http://msdn.microsoft.com/zh-cn/library/ms173171.aspx
文中部分内容转自: 金旭亮面向对象编程系列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值