A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 永远的小飞侠 中级黑马   /  2014-5-11 22:21  /  1303 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 永远的小飞侠 于 2014-5-12 08:08 编辑

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

评分

参与人数 1技术分 +1 收起 理由
张旭辉 + 1

查看全部评分

11 个回复

倒序浏览
委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。
回复 使用道具 举报
本帖最后由 嘴角上揚ぃ读不 于 2014-5-11 23:30 编辑

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

回复 使用道具 举报
委托是一种用户定义的引用类型,我们可以先像定义类那样定义一个委托(通常我们把委托定义在类中)
  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:03

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
本帖最后由 亚伦 于 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:02
回复 使用道具 举报
  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:46
7#
    ->通俗点说就是方法的容器
    ->就是一个能存放符合某种格式(方法签名)的方法的指针的清单
    ->委托是一个类
回复 使用道具 举报
亚伦 发表于 2014-5-12 00:09
哥们我实在没办法了,你看看这行不行,看不懂加我QQ聊吧2961117975

嗯   看懂一些了 ,多谢你了,没想到你会这么认真,多谢
回复 使用道具 举报
就像任务发布,你设定执行者 然后委托他去施行方法
回复 使用道具 举报
委托就是一种把方法当变量使用的一种机制。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马