示例1插件编程
根据对委托的理解,委托可以把一个方法当作参数进行传递,利用这个特性我们可以使用委托,实现插件编程。
public delegate int Transformer(int x); class Util{ pubilc static void Transform(int[] values, Transformer t){ for(int i = 0; i < values.Length; i++){ values[i] = t?.Invke(values[i]); } } } class Test{ static void Main(){ int[] values = {1,2,3}; Util.Transform(values, Sqare); foreach(int i in values){ Console.WriteLine(i + " "); //1 4 9 } } static int Sqare (int x) => x * x; }
这里的Transform方法就是插件方法,它接受一个委托参数。
示例2多播委托
所有的委托都有多播的能力。这就意味着一个委托可以引用一个方法,或者引用一个组方法。委托使用 += 和 -=运算符联结多个委托实例。
public class People{} public class Student:People{} public delegate void Action(); class Program { static void Say(){ Console