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

© 殘遛の丶狳味 中级黑马   /  2013-8-4 12:29  /  1353 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

C#中的委托是什么?事件到底是不是一种委托?事件和委托之间有什么样的联系?

4 个回复

倒序浏览
通过委托来调用函数
回复 使用道具 举报
通俗的说就是一个能存放某种方法的容器。委托是一个类。它可以添加调用多个方法
  1. //定义一个委托(类)
  2.     delegate void weituo();
复制代码
在类里
  1.   private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             //创建一个委托对象,添加方法
  4.             weituo w = new weituo(say);
  5.             //向委托中再加一个方法
  6.             w +=say1;
  7.           //调用委托
  8.             w();
  9.          
  10.         }

  11.         void say()
  12.         {
  13.             MessageBox.Show("你好!");
  14.         }

  15.         void say1()
  16.         {
  17.             MessageBox.Show("你好呀!");
  18.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
事件可以用来管理委托。可以认为事件是一种行为。   所以事件不是委托。  这是我的理解。如有不对,望指正
回复 使用道具 举报
委托  可以看成一种特殊的 数据类型 ,用于存放方法()的数据类型;
          首先声明一个委托 delegate void functionA()  这就好比定义一个名叫 functionA的数据类型,用于存放方法,方法签名要求返回值为void,参数类型为()
     
         赋值的时候就和一般数据类型一样
         数据类型    变量名;
         string        stra="数据";
         functionA  funA=方法A;

        调用的时候
        直接给委托一个参数类表 如 funA();
        就会执行之前赋值给funA的方法A()了;

        但是两者只是看似一样,在具体赋值上是有区别的,不过初学这样理解就OK了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马