本帖最后由 hehe04 于 2012-8-25 17:10 编辑
之前在三期那里发 没解决 现在在这里重发一次
我听人家讲多播委托不可以有返回值
但为什么我这里有,而且返回值不同,还可以编译通过,运行也没什么问题?是因为我没有用到返回值吗??- delegate double meixin(string a);
- class Program
- {
- static void Main(string[] args)
- {
- //使用匿名函数定义委托
- meixin meixin=delegate(string a){return 0; };
- //普通的委托定义
- meixin meixin2 =new meixin( Cat.a);
- meixin2("33");
- Cat Cat1 = new Cat();
- meixin meixin3 = Cat1.b;
- meixin3("xxx");
-
- //下面是+=,-=的用法,测试不同返回值的多播委托
- Console.WriteLine("下面是+=,-=的用法,测试不同返回值的多播委托");
- meixin2 += Cat1.b;
- meixin2("cat1");
- //再实例化一个CAT类的对象,将它的b方法添加到委托meixin3中来
- Console.WriteLine("添加不同对象的方法");
- Cat cat2 = new Cat();
- meixin3 += cat2.b;
- meixin3("cat2");
- //lambda表达式
- meixin3 = (string a) => { Console.WriteLine("lambda"); return 3; };
-
- }
- }
- class Cat
- {
- static public double a(string a)
- {
- Console.WriteLine("Cat类的静态方法a");
- return 1;
- }
- public double b(string a)
- {
- Console.WriteLine("Cat类的普通方法b");
- return 0;
- }
- }
复制代码 |