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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hehe04 中级黑马   /  2012-8-24 18:17  /  3227 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hehe04 于 2012-8-25 17:10 编辑

之前在三期那里发  没解决 现在在这里重发一次

我听人家讲多播委托不可以有返回值
但为什么我这里有,而且返回值不同,还可以编译通过,运行也没什么问题?是因为我没有用到返回值吗??
  1.     delegate double meixin(string a);
  2.     class Program
  3.     {
  4.         static void Main(string[] args)
  5.         {
  6.             //使用匿名函数定义委托
  7.             meixin meixin=delegate(string a){return 0; };
  8.             //普通的委托定义
  9.             meixin meixin2 =new meixin( Cat.a);
  10.             meixin2("33");
  11.             Cat Cat1 = new Cat();
  12.             meixin meixin3 = Cat1.b;
  13.             meixin3("xxx");
  14.             
  15.            //下面是+=,-=的用法,测试不同返回值的多播委托
  16.             Console.WriteLine("下面是+=,-=的用法,测试不同返回值的多播委托");
  17.             meixin2 += Cat1.b;
  18.             meixin2("cat1");
  19.             //再实例化一个CAT类的对象,将它的b方法添加到委托meixin3中来
  20.             Console.WriteLine("添加不同对象的方法");
  21.             Cat cat2 = new Cat();
  22.             meixin3 += cat2.b;
  23.             meixin3("cat2");
  24.             //lambda表达式
  25.             meixin3 = (string a) => { Console.WriteLine("lambda"); return 3; };

  26.         }
  27.     }
  28.     class Cat
  29.     {
  30.         static public double a(string a)
  31.         {
  32.             Console.WriteLine("Cat类的静态方法a");
  33.             return 1;
  34.         }
  35.         public double b(string a)
  36.         {
  37.             Console.WriteLine("Cat类的普通方法b");
  38.             return 0;
  39.         }
  40.     }
复制代码

评分

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

查看全部评分

3 个回复

倒序浏览
你是学C++的吧!
  多播委托  可以带返回值,你可以这样理解:只有最后一个的返回值被接收到,其他的都被忽略了  而已!
  这段代码,揉合了:委托,静态方法,匿名方法,lambda表达式 多播委托, 委托的移除,委托的动态添加,好多知识点,值得学习,只是楼主有C++的风范,命名也不太规范..{:soso_e143:}

评分

参与人数 1技术分 +1 收起 理由
官方工作人员 + 1 很给力!

查看全部评分

回复 使用道具 举报
刘逍遥 发表于 2012-8-24 21:10
你是学C++的吧!
  多播委托  可以带返回值,你可以这样理解:只有最后一个的返回值被接收到,其他的都被忽 ...

多谢指点!!!呵呵,命名是不规范,以后要多注意!!
回复 使用道具 举报
学习了 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马