C#委托之multi-casting

本篇将通过举例来介绍C#委托中的multi-casting。

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace multiCasting
{
delegate void D(int n);
class Program
{
static void Main(string[] args)
{
D d1 = new D(C.M1);
d1(1);
D d2 = new D(C.M2);
d2(2);
D d3 = d1+d2;
d3(10);
C c = new C();
D d4 = new D(c.M3);
d3 += d4;
d3(20);
}
}
class C
{
public static void M1(int p)
{
Console.WriteLine("M1: " + p);
}
public static void M2(int p)
{
Console.WriteLine("M2: " + p);
}
public void M3(int p)
{
Console.WriteLine("M3: " + p);
}
}
}

输出:

M1: 1
M2: 2
M1: 10
M2: 10
M1: 20
M2: 20