c#的委托(3)之多重委托
2016-06-03 09:35
337 查看
1.执行顺序是从头到尾依次执行的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Delegate
{
//multi-casting delegate
delegate void D(int x);
class Program
{
static void Main(string[] args)
{
D cd1 = new D(C.M1);
cd1(-1);
Console.WriteLine();
D cd2 = new D(C.M2);
cd2(-2);
Console.WriteLine();
//multi-casting delegate的一个效果
D cd3 = cd1 + cd2;
cd3(10);
Console.WriteLine();
C c = new C();
D cd4 = new D(c.M3);
cd3 += cd4;//cd3=cd1+cd2+cd4
cd3(30);
Console.WriteLine();
cd3 += cd1;
cd3(20);
Console.WriteLine();
cd3 -= cd1;
cd3(40);
Console.WriteLine();
cd3 -= cd2;
cd3 -= cd1;
cd3(50);
Console.WriteLine();
Console.ReadLine();
}
}
class C {
public static void M1(int i) {
Console.WriteLine("C.M1: " + i);
}
public static void M2(int i) {
Console.WriteLine("C.M2: " + i);
}
public void M3(int i) {
Console.WriteLine("C.M3: " + i);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Delegate
{
//multi-casting delegate
delegate void D(int x);
class Program
{
static void Main(string[] args)
{
D cd1 = new D(C.M1);
cd1(-1);
Console.WriteLine();
D cd2 = new D(C.M2);
cd2(-2);
Console.WriteLine();
//multi-casting delegate的一个效果
D cd3 = cd1 + cd2;
cd3(10);
Console.WriteLine();
C c = new C();
D cd4 = new D(c.M3);
cd3 += cd4;//cd3=cd1+cd2+cd4
cd3(30);
Console.WriteLine();
cd3 += cd1;
cd3(20);
Console.WriteLine();
cd3 -= cd1;
cd3(40);
Console.WriteLine();
cd3 -= cd2;
cd3 -= cd1;
cd3(50);
Console.WriteLine();
Console.ReadLine();
}
}
class C {
public static void M1(int i) {
Console.WriteLine("C.M1: " + i);
}
public static void M2(int i) {
Console.WriteLine("C.M2: " + i);
}
public void M3(int i) {
Console.WriteLine("C.M3: " + i);
}
}
}
相关文章推荐
- c#的委托(2)之调用实例化方法
- c#的委托(1)之调用静态方法
- c#事件(2)之相关内容
- c#的事件(1)之基本语法
- C# 开发记录
- Net 下采用GET/POST/SOAP方式动态调用WebService C#实现
- C#三层结构双数据源复习
- Csharp:file与filestream类区别
- C#题型补充
- [置顶] 从0自学C#11--多线程创建方法汇总以及优缺点
- C#的方法
- C#使用SevenZipSharp库时如何去掉压缩文件中的目录文件夹
- Quartz.NET c# 教程 - 课程六:CronTrigger
- 设计模式之抽象工厂模式
- C#基础--局部类型Partial
- 30天C#基础巩固----查找XML文件元素
- C#项目中常用到的设计模式
- C#根据当前时间获取,本周,本月,本季度等时间段
- c#总复习一
- C#—实验10.3—工具栏和状态栏