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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

public delegate void SalaryDelegate();
public delegate void SalaryDelegate(object sender,MyEventArgs e);
这两个都可以吗?

评分

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

查看全部评分

3 个回复

倒序浏览
定义的委托的返回值与参数类型、个数是与它将要存储的方法是一致的
  1. public delegate void SalaryDelegate();
  2. //这个委托类型SalaryDelegate仅能保存:
  3. //无返回值无参数的方法
  4. public delegate void SalaryDelegate(object sender,MyEventArgs e);
  5. //这个委托类型SalaryDelegate仅能保存:
  6. //无返回值且参数列表为
  7. //(object sender,MyEventArgs e)的方法
复制代码

评分

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

查看全部评分

回复 使用道具 举报
通俗的说,委托就是方法的容器。
创建委托:
准备一个方法:string Hello(string uName)
delegate 返回值类型 委托类型名(参数)
举例:delegate string DGSayHi(string uName)
创建委托对象:
DGSayHi dgSay=new  DGSayHi (Hello);或者DGSayHi dgSay=Hello
追加方法:dgSay+=Hello1;
删除就是:dgSay - =Hello1;
调用委托:  dgSay();

评分

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

查看全部评分

回复 使用道具 举报
只要给委托 变量传入的方法参数和返回值和定义的委托的返回值和参数类型和位置对应上旧可以了,第二个写法是模仿.net自带的事件的写法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马