前面两篇使用的每个委托都只包含一个方法调用,调用委托的次数与调用方法的次数相同.如果需要调用多个方法,就需要显示的调用多次委托.其实委托可以包含多个方法,这种委托称为多点委托.调用多点委托,就可以按顺序连续调用多个方法.
程序执行结果:
[quote]
学生在学习
学生在学习
请按任意键继续. . .
[/quote]
实际上委托可以识别运算符
[size=large]+
+=
-
-=[/size]
我们来看下面的例子:
代码片段:
例一:
程序执行结果:
[quote]
学生在学习
学生在学习
请按任意键继续. . .
[/quote]
-操作和-=操作同上......
多点委托的限制: :o
(1)
编译器只能识别返回值是void委托的+,+=,-,-=操作
或者
(2)
即时有的编译器能够识别返回值是非void委托的+,+=,-,-=操作,它也仅仅只返回最后一个方法的返回值......
class Program
{
static void Main(string[] args)
{
Student s = new Student();
DelStudy ds = new DelStudy(s.study);
ds += new DelStudy(s.study);
ds();
}
}
/// <summary>
/// 学生
/// </summary>
class Student
{
public void study()
{
//学习
Console.WriteLine("学生在学习");
}
}
delegate void DelStudy();
程序执行结果:
[quote]
学生在学习
学生在学习
请按任意键继续. . .
[/quote]
实际上委托可以识别运算符
[size=large]+
+=
-
-=[/size]
我们来看下面的例子:
代码片段:
例一:
Student s = new Student();
DelStudy ds1 = new DelStudy(s.study);
DelStudy ds2 = new DelStudy(s.study);
DelStudy ds3 = ds1 + ds2;
ds3();
程序执行结果:
[quote]
学生在学习
学生在学习
请按任意键继续. . .
[/quote]
-操作和-=操作同上......
多点委托的限制: :o
(1)
编译器只能识别返回值是void委托的+,+=,-,-=操作
或者
(2)
即时有的编译器能够识别返回值是非void委托的+,+=,-,-=操作,它也仅仅只返回最后一个方法的返回值......