看了一本《深入了解C#》感觉很不错,对于委托的讲解,给大家摘录了下来!
1.什么是委托
我的拙见:委托就是将方法作为参数,进行传递的
书中的记载:将某种行为“包含”在一个对象中,这个对象可以像其他任何对象那样使用,在该对象中可以齿形对象的行为。可以选择将委托类型看做只定义一个方法的接口,将委托示例看做实现了那个接口的一个对象(感觉这些说发有点空洞)。
2.简单委托的构成
为了让委托做某事,必须满足4个条件(我称之为”四步走“)
(1)声明委托类型(2)必须有一个方法包含要执行的的代码(3)必须创建一个委托实例(4)必须调用(invoke)委托实例
下面通过一个例子解释
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace weituo { class Program { static void Main(string[] args) { //(3)第二步:必须创建一个委托实例 ProcessDelegate process; Console.WriteLine("请输入用逗号分隔的两个数字:"); string input = Console.ReadLine(); int commaPos = input.IndexOf(‘,‘); double param1 = Convert.ToDouble(input.Substring(0, commaPos)); double param2 = Convert.ToDouble(input.Substring(commaPos + 1,input.Length - commaPos -1)); Console.WriteLine("输入M乘法D除法"); input =Console.ReadLine(); // 初始化委托变量 if(input =="M") //(4)必须调用(invoke)委托实例 process = new ProcessDelegate(Multiply); //注释:此处也可以写process = Multiply else //(4)必须调用(invoke)委托实例 process = new ProcessDelegate(Divide); // 使用委托调用函数 double result = process(param1,param2); Console.WriteLine("结果:{0}",result); Console.ReadKey(); } //(1)第一步:声明委托类型 delegate double ProcessDelegate(double param1,double param2); //(2)第二步:必须有一个方法包含要执行的的代码(下面是两个方法) static double Multiply(double param1, double param2) { return param1 * param2; } static double Divide(double param1, double param2) { return param1 / param2; } } }
实例二:
原文:http://www.cnblogs.com/alphafly/p/3985965.html