委托:委托是一种可用于封装命名或匿名方法的引用类型。
示例:
using System;
namespace DelegateTest
{
delegate int DoubleAction(int value);
delegate int MultiplyAction(int a, int b);
delegate int AddAction(int a, int b);
delegate int SubtractAction(int a, int b);
class Program
{
public static int Double(int value)
{
return 2 * value;
}
public int Multiply(int a, int b)
{
return a * b;
}
static void Main(string[] args)
{
//带有命名静态方法的委托
DoubleAction doubleAction = Program.Double;
Console.WriteLine("doubleAction(20)'s result is " + doubleAction(20));
//带有命名实例方法的委托
Program pro = new Program();
MultiplyAction multiplyActin = pro.Multiply;
Console.WriteLine("multiplyActin(10, 20)'s result is " + multiplyActin(10, 20));
//带有匿名方法的委托(C# 2.0之后的版本)
AddAction addAction = delegate(int a, int b)
{
return a + b;
};
Console.WriteLine("addAction(10, 20)'s result is " + addAction(10, 20));
//带有Lambda表达式的委托(C# 3.0之后的版本)
SubtractAction subtractAction = (int a, int b) => (a - b);
Console.WriteLine("subtractAction(30, 20)'s result is " + subtractAction(30, 20));
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}