委託:委託是一種可用於封裝命名或匿名方法的引用類型。
示例:
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();
}
}
}