下面的例子只是介绍它的使用,委托的主要作用是: 事件 启动线程 通用类库
下面是它的基本用法
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
/// <summary>
/// 定义一个委托
/// 返回类型和参数列表与Cacul类的两个方法对应
/// </summary>
/// <param name="value1"></param>
/// <param name="value2"></param>
/// <returns></returns>
public delegate int Caculator(int value1,int value2);
class Progarm
{
public static void Main()
{
//使用委托简便的解决类似的问题
Console.WriteLine(Progarm.CaculMethod(Cacul.Sub,2,2));
}
/// <summary>
/// 通过cal委托,可以自动调用Cacul类的两个方法
/// </summary>
/// <param name="cal"></param>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <returns></returns>
public static int CaculMethod(Caculator cal, int num1, int num2)
{
return cal(num1, num2);
}
}
class Cacul
{
/// <summary>
/// 进行加法计算的方法
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <returns></returns>
public static int Add(int num1, int num2)
{
return num1 + num2;
}
/// <summary>
/// 进行减法计算的方法
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <returns></returns>
public static int Sub(int num1, int num2)
{
return num1 - num2;
}
}
/// <summary>
/// 此类是最基础的解决办法
/// 当然还可以通过使用策略模式和反射实现,也是很灵活,但为显示委托的作用,在此不再举例
/// </summary>
class CalcuClass
{
/// <summary>
/// 选择执行方法的方法
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <param name="operaType"></param>
public static void ChoseMethod(int num1,int num2,string operaType)
{
switch (operaType)
{
case "+":
CalcuClass.Add(num1,num2);
break;
case "-":
CalcuClass.Add(num1,num2);
break;
default:
break;
}
}
/// <summary>
/// 进行加法计算的方法
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <returns></returns>
public static int Add(int num1, int num2)
{
return num1 + num2;
}
/// <summary>
/// 进行减法计算的方法
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <returns></returns>
public static int Sub(int num1, int num2)
{
return num1 - num2;
}
}
}