黑马程序员技术交流社区

标题: C#l的问题 [打印本页]

作者: 殘遛の丶狳味    时间: 2013-8-4 12:29
标题: C#l的问题
C#中的委托是什么?事件到底是不是一种委托?事件和委托之间有什么样的联系?
作者: 白天看见了月球    时间: 2013-8-4 12:30
通过委托来调用函数
作者: 念念念念_、    时间: 2013-8-4 13:49
通俗的说就是一个能存放某种方法的容器。委托是一个类。它可以添加调用多个方法
  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.         }
复制代码

作者: 念念念念_、    时间: 2013-8-4 14:04
事件可以用来管理委托。可以认为事件是一种行为。   所以事件不是委托。  这是我的理解。如有不对,望指正
作者: 274997322    时间: 2013-8-4 17:21
委托  可以看成一种特殊的 数据类型 ,用于存放方法()的数据类型;
          首先声明一个委托 delegate void functionA()  这就好比定义一个名叫 functionA的数据类型,用于存放方法,方法签名要求返回值为void,参数类型为()
     
         赋值的时候就和一般数据类型一样
         数据类型    变量名;
         string        stra="数据";
         functionA  funA=方法A;

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

        但是两者只是看似一样,在具体赋值上是有区别的,不过初学这样理解就OK了。





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