黑马程序员技术交流社区

标题: 关于委托 [打印本页]

作者: 永远的小飞侠    时间: 2014-5-11 22:21
标题: 关于委托
本帖最后由 永远的小飞侠 于 2014-5-12 08:08 编辑

关于委托的概念一直很模糊,谁能给俗气的简单的说明一下

作者: Mekor    时间: 2014-5-11 22:26
委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。
作者: 嘴角上揚ぃ读不    时间: 2014-5-11 23:25
本帖最后由 嘴角上揚ぃ读不 于 2014-5-11 23:30 编辑

委托是事件的基础。
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托


作者: 亚伦    时间: 2014-5-12 00:00
委托是一种用户定义的引用类型,我们可以先像定义类那样定义一个委托(通常我们把委托定义在类中)
  1. // 这个委托可以指向传入两个整数并返回一个整数的方法
  2.     public delegate int IntHelper(int i1, int i2);
复制代码

你可以把委托想象成一个方法调用列表,它可以在运行时动态调用其指向的方法。
那么,我们先声明一个该委托类型的变量,然后让它指向一些与它匹配的方法
  1. // 创建一个指向Add()方法的IntHelper对象
  2.             IntHelper iHelper = new IntHelper(Add);
复制代码
  1.         public static int Add(int a, int b)
  2.         {
复制代码


QQ截图20140511235718.png (2.74 KB, 下载次数: 25)

QQ截图20140511235718.png

作者: 亚伦    时间: 2014-5-12 00:01
本帖最后由 亚伦 于 2014-5-12 00:07 编辑
  1. namespace 初识委托
  2. {
  3.     class Program
  4.     {
复制代码

QQ截图20140511235718.png (2.74 KB, 下载次数: 27)

QQ截图20140511235718.png

作者: 亚伦    时间: 2014-5-12 00:09
  1. namespace 初识委托
  2. {
  3.     class Program
  4.     {
  5.         // 这个委托可以指向传入两个整数并返回一个整数的方法
  6.         public delegate int IntHelper(int i1, int i2);
  7.         static void Main(string[] args)
  8.         {
  9.             // 创建一个指向Add()方法的IntHelper对象
  10.             IntHelper iHelper = new IntHelper(Add);
  11.             // 注意,委托类型是不可变的,这意味着它又重新创建了一个全新的委托对象,现在这个新对象指向2个方法
  12.             iHelper += Subtract;

  13.             // 调用委托对象看看会发生什么?
  14.             int i = iHelper(100, 50);

  15.             // 那么,猜一下i的值是多少?
  16.             Console.WriteLine("i = {0}", i);
  17.         }
  18.         public static int Add(int a, int b)
  19.         {
  20.             Console.WriteLine("In Add()");
  21.             return a + b;
  22.         }

  23.         public static int Subtract(int a, int b)
  24.         {
  25.             Console.WriteLine("In Subtract()");
  26.             return a - b;
  27.         }
  28.     }
  29. }
复制代码
哥们我实在没办法了,你看看这行不行,看不懂加我QQ聊吧2961117975

作者: 轮回    时间: 2014-5-12 00:48
    ->通俗点说就是方法的容器
    ->就是一个能存放符合某种格式(方法签名)的方法的指针的清单
    ->委托是一个类

作者: 永远的小飞侠    时间: 2014-5-12 08:11
亚伦 发表于 2014-5-12 00:09
哥们我实在没办法了,你看看这行不行,看不懂加我QQ聊吧2961117975

嗯   看懂一些了 ,多谢你了,没想到你会这么认真,多谢
作者: 赵贺景    时间: 2014-5-12 20:01
就像任务发布,你设定执行者 然后委托他去施行方法
作者: /fendou    时间: 2014-5-13 15:43
委托就是一种把方法当变量使用的一种机制。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2