{
//定義一個委託類型,若是傳遞的方法有參數此處必須聲命,由於調用委託的時候將要用到
delegate int AddDel(int a, int b);
delegate int AddDel2(int a, int b);
static void Main(string[] args)
{
#region 普通的委託
////調用靜態方法
//AddDel del = new AddDel(AddStaticFunc); AddDel del=AddStaticFunc--這樣寫也能夠
//Console.WriteLine(del(1, 2));string
////調用實例方法
//AddDel2 del2 = new AddDel2(new Program().AddInstansFunc);
//Console.WriteLine(del2(3, 4));it
//Console.ReadKey();
#endregionio
#region 泛型委託
//Func<int, int, int> func =AddStaticFunc; --注意委託指定方法的時候能夠在new 委託(方法名)裏指定 也能夠直接如當前這種指定
//凡是委託指定方法的地方均可以用lambda表達式,lambda語句,匿名方法
//Func<int, int, int> func = new Func<int, int, int>((a, b) => a + b);----lambda 表達式
//Func<int, int, int> func = new Func<int, int, int>(delegate(int a, int b) { return a + b; });---匿名方法
Func<int, int, int> func = (int a, int b) => { return a + b; };// 注意在寫lambda表達式的時候(){}能夠省略的狀況都是其裏邊只有一個變量或一個語句泛型
Console.WriteLine(func(1, 3));
Console.ReadKey();
#endregion變量
}
/// <summary>
/// 靜態方法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
static int AddStaticFunc(int a, int b)
{
return a + b;
}
/// <summary>
/// 實例方法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public int AddInstansFunc(int a, int b)
{
return a + b;
}
}lambda